我已经在StackExchange网站管理员上提出了这个问题。我在我的博客网站上添加了一个html / javascript代码,用于禁用内容复制。代码是:
<script src='demo-to-prevent-copy-paste-on-blogger_files/googleapis.js'></script><script type='text/javascript'> if(typeof document.onselectstart!="undefined" ) {document.onselectstart=new Function ("return false" ); } else{document.onmousedown=new Function ("return false" );document.onmouseup=new Function ("return false"); } </script>
如果我想仅允许从页面中选择一些文本?例如,如果我想向读者提供一些代码,我怎么能让他们只复制代码而不是整个帖子?
先谢谢:)我的网站→www.aryanpoudel.com.np
答案 0 :(得分:2)
首先,您不能禁止从您的网站复制文本。所有文本都发送到用户的浏览器,因此也可以复制。这项措施只会禁止没有太多IT经验的用户不要复制文本。
要解决您的问题,最好将CSS用于此目的。有一个名为user-select
的CSS属性,可以设置为none。这不允许用户选择元素上的文本,属性设置为。请确保使用浏览器前缀进行用户选择,因为没有前缀的所有主流浏览器都不支持。
.element {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
您可以在此处找到浏览器兼容性:http://caniuse.com/#feat=user-select-none
如果您只想选择部分页面,可以通过将用户选择属性添加到页面的body
元素或*
选择器来实现。如果您想要选择一些元素,只需重置CSS样式,再次将属性更改回user-select: text
。
答案 1 :(得分:0)
实现目标的另一种方法是:
function getSelectedText() {
if (window.getSelection) {
txt = window.getSelection();
} else if (window.document.getSelection) {
txt =window.document.getSelection();
} else if (window.document.selection) {
txt = window.document.selection.createRange().text;
}
return txt;
}
function removeSelection() {
if (window.getSelection) {
if (window.getSelection().empty) {
window.getSelection().empty();
} else if (window.getSelection().removeAllRanges) {
window.getSelection().removeAllRanges();
}
} else if (document.selection) {
document.selection.empty();
}
}
var wordSelectables = ["number", "video", "computer"];
document.onmouseup = function() {
var selText = getSelectedText().toString();
if (wordSelectables.indexOf(selText) == -1) {
removeSelection();
}
}
&#13;
number video <p>video</p>computer
<input value="videocomputer">
&#13;