Javascript 跨浏览器粘贴捕获-Mac Opera问题
我正在进行跨浏览器粘贴捕获。我已经在Chrome和Firefox(在mac电脑上)上进行了测试。它应该可以在Chrome和Firefox上运行,但我还没有机会测试它。希望我不是在重新发明轮子,我已经为jQuery插件或任何真正实现文档范围粘贴的javascript寻找了一个好的位置 这是尚未在Opera(11.52版)中运行的(在mac上,尚未在PC上测试)。我的问题是,当按下cmd键时,当我按下v键时,我没有得到一个Javascript 跨浏览器粘贴捕获-Mac Opera问题,javascript,jquery,opera,copy-paste,Javascript,Jquery,Opera,Copy Paste,我正在进行跨浏览器粘贴捕获。我已经在Chrome和Firefox(在mac电脑上)上进行了测试。它应该可以在Chrome和Firefox上运行,但我还没有机会测试它。希望我不是在重新发明轮子,我已经为jQuery插件或任何真正实现文档范围粘贴的javascript寻找了一个好的位置 这是尚未在Opera(11.52版)中运行的(在mac上,尚未在PC上测试)。我的问题是,当按下cmd键时,当我按下v键时,我没有得到一个keydown事件。我不知道如何解决这个问题,因为我与Opera不是很相似 J
keydown
事件。我不知道如何解决这个问题,因为我与Opera不是很相似
JSFIDLE正在进行中的工作
下面的javascript将无法正常工作,请参阅JSFIDLE以获取工作脚本。要使下面的脚本正常工作,您需要os检测插件
要回答的问题-我如何在Opera中实现这一点
如果您愿意,请留下评论-这对您有用吗?(在评论中发布浏览器、操作系统版本)
更新-根据贝兹留下的评论,这是一部仅限mac版的歌剧
update2-我已经更新了JSFIDLE,它稍微简化了代码,但仍然无法在mac Opera中运行
javascript(jquery)
$(文档).ready(函数(){
//假膏
var doFakePaste=false;
$(文档).on('keyup',函数(e){
$('#status').html('');
if($.client.os==“Mac”&&e.which==86&&e.metaKey)||
($.client.os!=“Mac”和&e.which==86和&e.ctrlKey)){
doFakePaste=false;
$('#粘贴').blur().remove();
}
}).on('keydown',功能(e){
$('#status').html('which:'+e.which);
if($.client.os==“Mac”&&e.which==86&&e.metaKey)||
($.client.os!=“Mac”和&e.which==86和&e.ctrlKey)){
doFakePaste=true;
//有浆糊吗
$('').attr('contenteditable','').attr('id','paste').appendTo('body').on('paste',函数(e){
setTimeout(函数(){
doFakePaste=false;
var html=$('#粘贴').html();
var text=$(“#粘贴”).text();
$('#resultA').text(html);
$('#resultB').text(text);
$('#粘贴').blur().remove();
}, 1);
}).focus();
}
});
$('#data').html('os:'+$.client.os+'浏览器:'+$.client.browser);
});
html-再次查看以获取工作副本
<p>Click in this window and do a paste (ctrl-v or cmd-v). The pasted text will show up in the boxes below. I hope... the left box will be the HTML and the right box will be the TEXT.</p>
<div id="status"></div>
<div id="data"></div>
<div id="resultA"></div>
<div id="resultB"></div>
在此窗口中单击并执行粘贴(ctrl-v或cmd-v)。粘贴的文本将显示在下面的框中。我希望。。。左边的框是HTML,右边的框是文本
不是完整答案,而是我的部分经验:
$.client.os
并使用e.which==86&(e.metaKey | | e.ctrlKey)
文档
。div[contenteditable=“true”]
上的绑定事件-可能有帮助吗attr('contenteditable','')
<代码>内容可编辑可以是真
、假
和继承
(=从父项获取值)不是完整答案,而是我的部分经验:
$.client.os
并使用e.which==86&(e.metaKey | | e.ctrlKey)
文档
。div[contenteditable=“true”]
上的绑定事件-可能有帮助吗attr('contenteditable','')
<代码>内容可编辑可以是真
、假
和继承
(=从父项获取值)在Windows 7-Opera 11.60中对我有效在Windows 7-Opera 11.60中对我有效我们不能只使用这个而不使用浏览器检测吗。如果(e.type=='keydown'&&e.which==86&&(e.metaKey | | e.ctrlKey))我们不能只使用这个而不使用浏览器检测。if(e.type=='keydown'&&e.which==86&&e.metaKey | | e.ctrlKey))
<p>Click in this window and do a paste (ctrl-v or cmd-v). The pasted text will show up in the boxes below. I hope... the left box will be the HTML and the right box will be the TEXT.</p>
<div id="status"></div>
<div id="data"></div>
<div id="resultA"></div>
<div id="resultB"></div>