如何在没有输入textarea和选择项目的情况下阻止文本选择

时间:2011-01-11 08:21:19

标签: javascript internet-explorer select input textarea

如何在没有输入文本区域和选择项目的情况下阻止文本选择 我实际上有在IE中工作但不在其他浏览器中的脚本,这里是:

 var omitformtags=["input", "textarea", "select"]
 omitformtags=omitformtags.join("|")
 function disableselect(e){
  if (omitformtags.indexOf(e.target.tagName.toLowerCase())==-1)
   return false
  }
 function reEnable(){
   return true
  }

 if (typeof document.onselectstart!="undefined")
  document.onselectstart=new Function ("return false")
 else{
  document.onmousedown=disableselect
  document.onmouseup=reEnable
 }
  document.onmousedown=click;
  function click()
 {
  if ((event.button==2) || (event.button==3)) { alert("Yazı Kopyalayamazsınız!");}

 }

我需要在其他浏览器中以相同的方式工作,必须有一个现成的脚本,只是无法在网上找到..

2 个答案:

答案 0 :(得分:4)

<div onmousedown='return false;' onselectstart='return false;'></div>

onmousedown禁用了对Firefox,Safari,Opera,Chrome和大多数其他网络浏览器的选择,onselectstart for IE。

虽然禁用文本选择和上下文菜单是非常糟糕的样式,但不会阻止专业用户选择您的文本。只需在浏览器中禁用JavaScript即可再次进行选择。

答案 1 :(得分:2)

更新了我的答案以便更清楚

浏览器可以禁用使用css样式或使用特殊元素属性进行选择。这种方式更好:

  • 没有支持的脚本
  • 不用担心用户禁用脚本并复制她需要的内容
  • 优雅的解决方案

Opera和IE忽略了这样的风格,但是html元素属性不可选,否则会选择。尝试以下页面(我在IE8,FF3.6,Safari5,opera11,Chrome8中测试过):

<html>

<head>

<style>

.unselectable {
    -moz-user-select: none; /* for FireFox */
    -webkit-user-select: none; /* for Chrome and Safari */
    -khtml-user-select: none; /* probably old webkit browsers, but new support it too */
    user-select: none; /* for future CSS3 compliant browsers */
}

</style>

</head>

<body>

<!-- add unselectable class to deny selecting in FF, Chrome, Safari and CSS3 compliant browsers -->
<!-- add unselectable attribute to deny selecting in Opera and IE -->
<div class="unselectable" unselectable="on">test</div>

</body>

</html>

有关它的其他信息,请访问this page。现在您可以选择最适合您使用/ mantain的选项。再一次 - 这个解决方案根本不需要javascript,应该更安全(如果你可以编辑html \ css页面而不需要动态。否则你可以尝试通过javascript添加css class \ element属性..)