我正在進行跨瀏覽器粘貼捕獲。我有這個工作&在Chrome和Firefox(在Mac上)測試。它應該工作在PC上的Chrome和Firefox,但我還沒有機會測試它。希望我不會重新發明輪子,我已經爲jQuery插件或任何實現文檔範圍粘貼的JavaScript真正尋找了一點點。跨瀏覽器粘貼捕獲 - Mac Opera問題
這是不是尚未在Opera(版本11.52)(在Mac上,尚未在PC上測試過)中工作。我的問題是,當按下cmd鍵時,當我按下v鍵時,我沒有收到事件。我不知道如何解決這個問題,因爲我不是很酷的Opera。
工作中的jsfiddle是here。
下面的JavaScript不能正常工作,請參閱工作腳本的jsfiddle。要使腳本在下面工作,您需要this os檢測插件。
問題回答 - 我該如何在Opera中完成這項工作?
留下評論,如果你喜歡 - 這是否適合你? (後瀏覽器,操作系統版本的評論)
更新 - 基於評論Baez離開這是一個Opera僅在mac問題。
update2 - 我已經更新了jsfiddle,它簡化了代碼,但仍然無法使它在mac中運行。
的JavaScript(jQuery的)
$(document).ready(function() {
// Fake paste
var doFakePaste = false;
$(document).on('keyup', function(e) {
$('#status').html('');
if (($.client.os === "Mac" && e.which == 86 && e.metaKey) ||
($.client.os !== "Mac" && e.which == 86 && e.ctrlKey)) {
doFakePaste = false;
$('#paste').blur().remove();
}
}).on('keydown', function(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;
// got a paste
$('<div></div>').attr('contenteditable', '').attr('id', 'paste').appendTo('body').on('paste', function(e) {
setTimeout(function() {
doFakePaste = false;
var html = $('#paste').html();
var text = $('#paste').text();
$('#resultA').text(html);
$('#resultB').text(text);
$('#paste').blur().remove();
}, 1);
}).focus();
}
});
$('#data').html('os: ' + $.client.os + ' browser: ' + $.client.browser);
});
HTML - 再次看到jsfiddle工作副本
<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>
爲我工作在Windows 7 - 歌劇11.60 – 2011-12-17 06:29:51