场景:当我从网上复制了所需代码到编辑器粘贴时,总会有如下版权信息提示
看到好几次后,在好奇心的驱使下开始搜寻答案。网上有好几种写法,最开始我找到了如下JS代码
document.body.oncopy = function() { setTimeout( function() { var text = clipboardData.getData("text"); if(text) { text = text + " 本文来自: (www.jb51.net) 详细出处参考:" + location.href; clipboardData.setData("text", text); } }, 100) }
但这种方法经过测试,会报错,如下图
后来终于被我找到下面的JS代码,亲测可用,附上截图和代码
function addLink() { var body_element = document.body; var selection; //var selection = window.getSelection(); var blogName = '[ 何海宝的博客 ]'; // 此处修改成你自己网站的名称 selection = window.getSelection() ? window.getSelection() : document.selection.createRange().text; if(window.clipboardData) { // Internet Explorer var pagelink = " 原文出自" + blogName + " 转载请保留原文链接: " + document.location.href + ""; var copyText = selection + pagelink; window.clipboardData.setData("Text", copyText); return false; } else { var pagelink = " 原文出自" + blogName + " 转载请保留原文链接: " + document.location.href + ""; var copyText = selection + pagelink; var newDiv = document.createElement('div'); newDiv.style.position = 'absolute'; newDiv.style.left = '-99999px'; body_element.appendChild(newDiv); newDiv.innerHTML = copyText; selection.selectAllChildren(newDiv); window.setTimeout(function() { body_element.removeChild(newDiv); }, 0); } } document.oncopy = addLink;
注:网上有很多地方都引用了这段代码,但大多都没有标明出处,后来巧合之下发现下面的原文链接
原文链接:http://www.hehaibao.com/js-auto-add-copyright/
补充:上面代码有2个我看不懂的属性,有兴趣的小伙伴可以看看
window.getSelection():表示用户选择的文本范围或光标的当前位置
clipboardData对象:剪贴板数据对象