2011-11-16 35 views
4

我有一個網站,我想禁止用戶選擇內容,除了輸入區域。我目前有一些CSS禁用用戶選擇:在Internet Explorer中取消選擇<input>以外的所有文字?

-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-o-user-select: none; 
user-select: none; 

但是,這不包括Internet Explorer;因此,我需要實現一些JavaScript:

<body onselectstart="return false;"> 

通過CSS和JavaScript,我可以使所有流行的瀏覽器都無法選擇所有內容。但是,這些代碼也使區域不可選,這是可用性差的一個主要情況。我用CSS來使輸入區域選擇:

-webkit-user-select: text; 
-khtml-user-select: text; 
-moz-user-select: text; 
-o-user-select: text; 
user-select: text; 

..正如你所料,這並不能掩蓋IE瀏覽器,因爲我使用JavaScript來禁止從被選擇的所有內容。

我能做些什麼來使除輸入區域之外的所有內容都不可選?

+5

無回答,只有一個問題出現在我身上 - _爲什麼在世界上你會那樣做?_ 不是爲了「安全」。這隻會讓我煩惱,然後我會** Ctrl + U **來查看源代碼和從那裏複製。 –

+1

可能的重複http://stackoverflow.com/questions/4448671/making-things-unselectable-in-ie – joshuahedlund

回答

2

由於該事件是冒泡的身體,而不是源自那裏,我想你可以實際目標節點檢查節點名稱,避免返回false針對某些節點上發生的事件:

<body onselectstart="if ((event.target || event.srcElement).nodeName !== 'INPUT') return false;"> 
+0

這是我一起去的方法;這非常簡單。謝謝! – Ashli

2

試試這個:oncontextmenu =「return false;」

假如把它放在你身上的標籤,然後使用類似:

e.cancelBubble = true; 
if (e.stopPropagation) e.stopPropagation(); 

在JavaScript功能爲您想選擇的輸入項目。這應該停止觸發身體標記的事件的傳播。

+0

當然,這個解決方案假設JavaScript在瀏覽器中打開。 – JasCav

+0

同意。但是,她確實說她需要一些Javascript ... – user978122

0

您可以添加專有的屬性IE向unselectable="on"要做出不可選擇在IE中的任何元素:

<p unselectable="on">I don't want IE users to easily select this text 
    for some reason.</p> 

進行更詳細的說明,請參見Making things unselectable in IE

如果從javascript執行此操作,請務必使用el.setAttribute("unselectable","on")。僅使用el.unselectable="on"將不起作用。

+0

這是特定元素的好主意。但是,我很樂意將其應用於所有元素。 – Ashli

相關問題