阻止浏览器隐藏元素设置
在页面加入水印时,一个潜在的问题是浏览器提供的隐藏元素设置。为了防止用户通过该设置修改水印,可以采取以下措施:
1. 禁止右键菜单和 f12
以下代码可禁止右键查看源代码和使用 f12 键盘快捷键打开控制台:
//禁止f12键盘事件 document.addeventlistener('keydown', function(event){ return 123 != event.keycode || (event.returnvalue = false) }); //禁止右键、选择、复制 document.addeventlistener(‘'contextmenu'’, function(event){ return event.returnvalue = false })
2. 通过页面宽度变化监测控制台
浏览器打开控制台时,窗口的宽度和高度通常会发生变化。可以通过监测这些变化来判断控制台是否被打开:
function resize(){ var threshold = 200; var widththreshold = window.outerwidth - window.innerwidth > threshold; var heightthreshold = window.outerheight - window.innerheight > threshold; if(widththreshold || heightthreshold){ console.log('控制台打开了') } } window.addeventlistener('resize', resize); resize()
3. 利用 debugger
debugger 命令可中断代码执行,用于调试目的。可以利用该命令进行无限递归,让控制台持续忙于调试,从而防止用户查看代码:
function check() { function doCheck(a) { (function() {}["constructor"]("debugger")()); //debugger doCheck(++a); } try { doCheck(0) } catch(err) { console.log(err) } };
4. 转换为图片
将水印内容转换为图片可以有效防止用户隐藏或修改水印。这样做的好处是用户无法通过浏览器的隐藏元素设置来修改图像。