导航到以下网站:www.currys.co.uk - 并查看任何产品。以下是一台电视机:
现在选择产品标题(“PANASONIC VIERA TX-49DX650B 智能 4k 超高清 49 英寸 LED 电视”),您会看到一个小框弹出,告诉您他们有一个价格比较服务,显然是为了阻止您在谷歌上搜索该产品并在其他地方找到更便宜的产品。
这是一段非常巧妙的代码,我并不反对这家零售商使用它,但网站知道我何时从中复制信息,这让我很不高兴。他们是怎么做到的?我该如何阻止它?我知道这不是 Flash 小程序,因为我启用了“点击运行”功能。
答案1
他们在网页上大量使用 Ajax Javascript。Ajax 能够监控剪贴板。
可以轻松编写脚本来检查标题是否已被复制到剪贴板并显示弹出窗口,就像他们在这里所做的那样。
要停止它,请禁用网站的 javascript 执行。根据您的浏览器,您可能只能在此网站上停止它,但请理解,像这样的网站如果内置了如此好的 javascript,将无法正常运行。例如,您可能无法再在该网站上订购。
答案2
查看页面上的代码,他们正在使用 Javascript 来检测复制方法。
如果你看看此链接,有一个很好的教程介绍如何自己实现此功能。
从文章中(以防链接失效),类似这样的操作会起作用:
<html>
<head>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<style type="text/css">
span{
color:blue;
}
</style>
</head>
<body>
<h1>jQuery copy, paste and cut example</h1>
<form action="#">
<label>TextBox : </label>
<input id="textA" type="text" size="50"
value="Copy, paste or cut message here" />
</form>
<span></span>
<script type="text/javascript">
$(document).ready(function() {
$("#textA").bind({
copy : function(){
$('span').text('copy behaviour detected!');
},
paste : function(){
$('span').text('paste behaviour detected!');
},
cut : function(){
$('span').text('cut behaviour detected!');
}
});
});
</script>
</body>
</html>
值得注意的是,通过改变$("#textA")
操作绑定到的引用对象,您可以改变检测副本的元素(例如,绑定到 DIV、跨度、整个页面等)。
$('span').text('copy behaviour detected!');
您还可以通过修改操作函数内的代码来更改操作。相反,您可以使用alert('copy detected');
,您可以调用函数、显示(或隐藏)包含信息的 DIV、打开弹出窗口、清除用户剪贴板,这样复制的文本实际上并没有被复制,几乎任何您喜欢的操作。
要阻止这种情况发生,请禁用 Javascript。但是,如果你这样做,其他任何事情都不会起作用。查看 Currys 网站上的代码,它不会将你复制的内容发布回他们的服务器 - 因此,虽然网页会提醒你正在复制文本,但网站所有者似乎没有在任何地方记录或记录此信息