用户在移动浏览器中复制网页内容时如何自动添加版权?

Posted

技术标签:

【中文标题】用户在移动浏览器中复制网页内容时如何自动添加版权?【英文标题】:How to auto add copyright when user copy the web content in mobile browsers? 【发布时间】:2016-02-26 03:03:34 【问题描述】:
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);

上面的代码可以在电脑浏览器上运行,但是在手机浏览器上就不行了。我已经测试了问题是event.preventDefault();。但是没有这个,我的功能将没有意义。有人可以帮助我吗?

【问题讨论】:

只是为了记录,我绝对讨厌网站会弄乱你的剪贴板。 我也不喜欢,但现在这是我的工作,我必须这样做。 【参考方案1】:

我不确定这是否可行,因为我自己没有对此进行测试,但我认为您想使用return false,这应该可以防止默认事件行为。你也可以试试 event.stopPropagation() 和 return 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

【讨论】:

谢谢,但它不起作用。能不能用手机浏览器访问www.zhihu.com,然后把一些42字以上的答案复制到备忘录中,可以找到版权。 我没有 iPhone :|

以上是关于用户在移动浏览器中复制网页内容时如何自动添加版权?的主要内容,如果未能解决你的问题,请参考以下文章

JS实现复制网页内容自动加入版权内容代码和原文链接

Clipboard.js : 移动端浏览器实现网页内容复制

原生JS在网页上复制的所有文字后面自动加上一段版权声明

如何自动选定一个网页显示的全部内容到复制到剪贴板中?

在电脑上写移动端的网页如何在手机上测试?

复制文字时自动加版权