如何允许在禁用的帖子上选择一些文本?

时间:2015-12-31 12:21:44

标签: javascript jquery blogger blogspot

我已经在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

2 个答案:

答案 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)

实现目标的另一种方法是:

&#13;
&#13;
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;
&#13;
&#13;