2011-01-11 66 views
3

如何阻止文本選擇不輸入文本區域和選擇項目 實際上我在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

那麼你的意思是你的問題 – tekknolagi 2011-01-11 08:25:06

+0

我需要阻止在其他瀏覽器上的相同方式不是很明顯嗎? – 2011-01-11 08:26:15

回答

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

onmousedown禁用Firefox,Safari,Opera,Chrome和大多數其他Web瀏覽器的選擇,onselectstart for IE。

雖然禁用文本選擇和上下文菜單是非常糟糕的風格,並不妨礙親用戶選擇您的文本。只需在其瀏覽器中禁用JavaScript即可再次進行選擇。

2

更新我的答案更清晰

瀏覽器可以d可以選擇使用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。現在,您可以選擇最適合您使用/保養的選項。再一次 - 這個解決方案根本不需要javascript,並且應該更安全(如果你可以編輯html \ css頁面並且不需要動態的,否則你可以嘗試通過javascript添加css class \ element屬性..)

+0

真是痛苦。真的應該有一種方法來說「允許輸入和textarea字段內容被選中,否則不允許在其他元素上選擇」。我不在乎高級用戶是否仍然可以訪問文本。我關心的是在拖放式UI中,特別是我不希望非輸入元素被選中。似乎是合理的,但不知何故它很難實現。 – jlarson 2011-10-19 19:38:24