我正在尝试为 Safari 编写一些代码来处理“粘贴”事件,但它似乎无法正常工作。根据 WebKit DOM 参考,oncut
、onpaste
和oncopy
都或多或少地像 W3C 剪贴板 API 所建议的那样处理。但是,它不像我预期的那样工作。我正在粘贴图像数据,但据我所知,我遇到的问题适用于任何类型的粘贴。这个jsfiddle在 Chrome 中工作得很好,但在 OSX 上的 Safari 6.0.4 中却不行。
$(function () {
console.log("ready");
$("#pastearea").on("paste", function (e) {
e.preventDefault();
console.debug("testing paste in safari");
var blob = e.originalEvent.clipboardData.items[0].getAsFile();
console.debug(blob);
var reader = new FileReader();
reader.onload = readerLoaded;
reader.readAsDataURL(blob);
});
});
function readerLoaded(e) {
$("#dest").attr("src", e.target.result);
}
我再次尝试使用纯 JS。仍然没有喜悦:
<div id="pastearea" onpaste="plainjsOnPaste()" style="width: 100px; height: 100px; background-color: blue;"/>
function plainjsOnPaste(e) {
console.log("blahblahblah");
console.log(e);
}
如果 Safari 存在问题,那么显然我不应该期望 jQuery 能够工作。据我所知,在第二次尝试(普通)中,我正在做 WebKit 参考建议我应该做的事情,但它根本不起作用。这是 Safari 的一些已知限制,还是椅子和键盘之间的问题?
更新: Safari 似乎没有实现 W3C 的剪贴板 API 工作草案。我正在研究解决方法,但如果有人知道,我很想听听。