javascript - 手机浏览器复制网页内容如何自动添加版权?

标签 javascript ios mobile-safari

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.

这个问题的前两个答案也最相关:

event.preventDefault() vs. return false

关于javascript - 手机浏览器复制网页内容如何自动添加版权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642649/

相关文章:

javascript - 从 safari 调用 ios 安装的应用程序

javascript - 如何在 TypeScript 中读取 "transpose"对象

ios - 限制几个文本字段的长度

javascript - Span 标签 onclick 加载空白页?

ios - 前缀在 Xcode 7 beta 6 中是否正常工作?

ios - 安全 WebSocket WSS(自签名证书)在 iOS Safari 上不起作用

javascript - 预填充 iPhone Safari SQLite DB

javascript - WebAudioAPI decodeAudioData() 在 iOS 14 Safari 上给出空错误

javascript - 在 JavaScript 中使用递归获取范围数

javascript - Angular 2 : Form submission canceled because the form is not connected