2008-09-26 60 views
11

我在HTML/CSS/JS中構建菜單,我需要一種方法來防止菜單中的文本在雙擊時突出顯示。我需要一種方法將多個div的id傳遞給一個函數,並在其中突出顯示關閉。什麼是最好的方式來防止突出文字點擊其包含div在JavaScript中?

所以當用戶偶然(或故意)雙擊菜單時,菜單會顯示其子元素,但其文本不會突出顯示。

有很多腳本在網上流傳,但很多都顯得過時。最好的方法是什麼?

+0

擴大爲什麼你覺得有必要,以防止用戶的文本選擇? – 2009-05-09 15:58:33

+0

我有一個類似的問題,發現這個有用: http://stackoverflow.com/questions/3169786/clear-text-selection-with-javascript – 2012-03-25 14:15:46

回答

22

在(Mozilla的火狐,卡米諾,Safari瀏覽器,谷歌瀏覽器),你可以使用這個:

div.noSelect { 
    -moz-user-select: none; /* mozilla browsers */ 
    -khtml-user-select: none; /* webkit browsers */ 
} 

對於IE沒有CSS選擇,但你可以捕捉ondragstart事件,並返回false;

更新

該物業的瀏覽器支持自2008年以來

div.noSelect { 
    -webkit-user-select: none; /* Chrome all/Safari all */ 
    -moz-user-select: none;  /* Firefox all */ 
    -ms-user-select: none;  /* IE 10+ */ 
} 

https://css-tricks.com/almanac/properties/u/user-select/

1

您可以:

  • 給它(「它」是你的文字)一個onclick事件
  • 首先單擊設置爲當前時間的變量
  • 第二次點擊檢查,看看是否變量x從當前時間,當前時間(所以雙擊結束,例如500ms,不會註冊爲雙擊)
  • 如果它雙擊,對頁面執行某些操作,例如添加隱藏的HTML ,做document.focus()。你必須嘗試這些,因爲有些可能會導致不必要的滾動。
+1

如果你想這樣做,因爲軟DRM ,請放棄這個主意!人們可以控制+ a或只是閱讀來源。 – Oli 2008-09-26 12:41:50

0

希望這是你在找什麼。

<script type="text/javascript"> 
function clearSelection() { 
var sel ; 
if(document.selection && document.selection.empty){ 
document.selection.empty() ; 
} else if(window.getSelection) { 
sel=window.getSelection(); 
if(sel && sel.removeAllRanges) 
sel.removeAllRanges() ; 
} 
} 
</script> 

<div ondblclick="clearSelection()">Some text goes here.</div> 
3

你可以使用這個CSS簡單地隱藏選擇顏色(不支持IE):

#id::-moz-selection { 
background: transparent; 
} 

#id::selection { 
background: transparent; 
} 
相關問題