我有一个名称列表,它可以单击以显示每个名称的详细信息。但我不希望选择和复制该列表的名称。它只是一个保护。怎么办?
可以在上面放一个透明层,或者使用onselectstart事件,但不好
我有一个名称列表,它可以单击以显示每个名称的详细信息。但我不希望选择和复制该列表的名称。它只是一个保护。怎么办?
可以在上面放一个透明层,或者使用onselectstart事件,但不好
有了这个 CSS
.unselectable {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
而这个 HTML
<body>
<p class="unselectable">The user is not able to select this text in Firefox, Chrome, Safari and IE.</p>
</body>
无法选择该段落。
对于复制和粘贴文本无用的按钮和事物来说,这很好。
这不能被认为是安全的,因为用户显然可以禁用 CSS 或只查看源代码。(或使用 wget/curl/raw 套接字获取内容)。
浏览器支持相当不错:http ://caniuse.com/user-select-none
IE10 及更高版本(当然 IE10 现在是最流行的 IE 版本),+ 所有其他浏览器。
如果由于某种原因您支持具有如此琐碎功能的旧版本的 IE,您可以添加unselectable="on"
该元素。
如果只是为了美观,因为您需要在 Javascript 中进行一些操作,这会使选择变得奇怪,您可以通过此 CSS 属性禁用用户选择:
.block {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
但是,用户将始终能够通过其他方式选择内容:源代码、停用 CSS、将页面保存在他的磁盘上等。您无法保护您的数据不被复制到 Internet。如果您只想为自己保留它,请不要在网络上分享它:)另请参阅这篇文章,它解释了另一个问题的主题。
当你想保护信息时,不要把它放在互联网上——就这么简单。
话虽如此,降低文本机器可读性的一种方法是将其转换为图像。但是仍然可以使用光学字符识别来提取文本。像在验证码中一样混淆文本可能会使这更难,但 1. 仍然不是不可能(破解验证码是一个经过充分研究的领域)和 2. 使用户体验更差,尤其是对于视力受损的人。
好吧,您可以使用 JavaScript 禁用右键单击页面,但它不会阻止用户从您的网站复制内容。
还有其他选项可以复制内容:
如果您将某些内容放到 Internet 上,就有可能被复制。您可以阻止普通用户使用 JavaScript 和其他度量进行复制,但高级用户会以任何方式复制它。
您可以尝试将所有文本渲染为图像,没有人可以使用打印屏幕阻止它们,但至少不会有复制。见 imagettftext ( http://php.net/manual/en/function.imagettftext.php ) 或 http://sgss.co/previous/experiments/phpfontimagegenerator2/
或者只是谷歌一些将文本呈现为图像的更多方法。
你不能。不要尝试。
如果用户可以看到它,他们可以(以某种方式)复制它。