前言
最近在慕课网遇到个比较降低用户体验的事情。其实在知乎、掘金也有碰到, 以及其他小网站也会碰到。
就是他们会拦截copy
事件, 然后加上自己的copyright
。
问题就在于, 我复制代码去执行, 还得手动去删除copyright
, 太麻烦了。
添加版权信息
网上搜了下, 果然有代码, 遂复制一份。略微修改, 加了点注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| (function () { function addCopyright() { var body_element = document.getElementsByTagName('body')[0];
var selection = ""; if (window.getSelection) { selection = window.getSelection(); } else if (document.getSelection) { selection = document.getSelection(); } else if (document.selection) { selection = document.selection.createRange().text; } else { selection = ""; }
var pagelink = "<br /><br /> 转载请注明来源: <a href='" + document.location.href + "'>" + document.location.href + "</a>";
var copy_text = selection + pagelink;
var new_div = document.createElement('div'); new_div.style.left = '-99999px'; new_div.style.position = 'absolute'; body_element.appendChild(new_div); new_div.innerHTML = copy_text;
selection.selectAllChildren(new_div);
window.setTimeout(function () { body_element.removeChild(new_div); }, 0); }
var all = document.getElementsByTagName("*");
for (var i = 0, len = all.length; i < len; i++) { var element = all[i]; element['oncopy'] = addCopyright; } })();
|
Hack方案
明显这是可以通过GreaseMonkey解决的事情。
思路就是修改copy
事件为空即可。
1 2 3 4 5 6 7 8 9 10
| (function () { var all = document.getElementsByTagName("*");
for (var i = 0, len = all.length; i < len; i++) { var element = all[i]; element['oncopy'] = ''; } })();
|
写完后才发现早有人实现了。网页限制解除(改)
参考资料