当用户在移动浏览器中复制 Web 内容时,如何自动添加版权

How to auto add copyright when user copy the web content in mobile browsers?

本文关键字:何自动 添加 移动 用户 浏览器 Web 复制      更新时间:2023-09-26
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() 和返回 false。

在 Mozilla 开发者网络 https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Tutorial/More_Event_Handlers#Prevent_Default_Action 有更多信息。我在这个页面中感到困惑的是这句话中"属性侦听器"的精确定义:

或者,对于属性事件侦听器,只需从代码中返回 false。

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

event.preventDefault() vs. return false