setClipboardText = function(event) {
var htmlData, node, textData;
event.cancelable = true;
event.preventDefault(); //add this code will make iOS paste null
node = document.createElement('div');
node.appendChild(window.getSelection().getRangeAt(0).cloneContents());
htmlData = '<div>Some copyright' + node.innerHTML + '</div>';
textData = 'Some copyright' + window.getSelection().getRangeAt(0);
event.clipboardData.setData('text/html', htmlData);
event.clipboardData.setData('text/plain', textData);
};
copyrightRange = document.getElementById('content-copyright');
copyrightRange.addEventListener('copy', function(e) {
setClipboardText(e);
上面的代码在pc浏览器上可以运行,但是在移动浏览器上就不行了。我已经测试过问题是 event.preventDefault();
。但如果没有这个,我的功能将毫无意义。有人可以帮助我吗?
最佳答案
我不确定这是否可行,因为我自己没有对此进行测试,但我认为您想使用 return false
,这应该可以防止默认事件行为。您也可以尝试使用 event.stopPropagation() 和 return false。
在 Mozilla 开发者网络上有更多信息 https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Tutorial/More_Event_Handlers#Prevent_Default_Action .我在这个页面中感到困惑的是这个引用中“属性监听器”的精确定义:
Alternatively, for attribute event listeners, you can just return false from the code.
这个问题的前两个答案也最相关:
关于javascript - 手机浏览器复制网页内容如何自动添加版权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642649/