从JavaScript的角度,聊一聊网页中的禁止复制功能的实现

引言

当你在上网时,有没有遇到过这样的网页呢?在这个页面中,你无法进行复制,甚至是连鼠标的右键菜单都点不开。其实,这些功能都是通过JavaScript来实现的,让我们一起来了解一下吧!

思路分析

下面以某树的作业页面为例,来看一下它的禁止复制功能是如何实现的。

在这个页面中,鼠标右键菜单被屏蔽了,当我们点击鼠标右键时,会在控制台得到如下信息
在这里插入图片描述
让我们来看一下,这个功能是如何实现的。
在这里插入图片描述
实现代码如下:

ƒ (e){
	console.log("屏蔽右键菜单"),window.event&&(e=window.event);
	try{
	var t=e.srcElement;
	return"INPUT"==t.tagName&&"text"==t.type.toLowerCase()||"TEXTAREA"==t.tagName
	}catch(e){
		return!1
	}
}

突破方法很简单,只需令 document.οncοntextmenu=true; 即可。

document.oncontextmenu=true;

回到页面,我们可以发现右键菜单可以用了。
在这里插入图片描述
虽然,我们可以使用右键菜单了,但是却依旧不能够复制。下面让我们来解决禁止复制的功能。
老套路,先在控制台中调试一下。
在这里插入图片描述

ƒ (e){window.event&&(e=window.event);try{var t=e.srcElement;return"INPUT"==t.tagName&&"text"==t.type.toLowerCase()||"TEXTAREA"==t.tagName}catch(e){return!1}}

对比后发现,这三处用的都是同一函数啊!
在这里插入图片描述
好了,现在我们就可以进行复制了。
在这里插入图片描述

总结

解决网页中禁止复制功能的三句JavaScript代码如下:

//右键菜单
document.oncontextmenu=true;
//复制
document.onselectstart=true;
document.oncopy=true;

当然,针对具体情况应该具体分析,不同网站的实现代码可能会不一样,不能一概而论。

发布了187 篇原创文章 · 获赞 289 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Deep___Learning/article/details/104693668