2009-10-28 18 views
3

我創建了一個按鈕CSS類,它使用具有不同位置的背景圖像來顯示正常,鼠標懸停和點擊狀態下的不同圖像。 完全破壞視覺效果的一件事是,如果我反覆點擊這樣一個鏈接並將鼠標移動一個像素,鏈接文本就會被選中。使用CSS或其他非JS方法模仿「onselectstart = return false」?

有沒有辦法實現的

onselectstart = "return false;" 

的效果,而無需指定每個按鈕?一個基於CSS的解決方案將是完美的,但我想不出一個。有任何想法嗎?

一種方法是使用原型或JQuery並手動設置onselectstart事件來遍歷每個「按鈕」元素。但是,如果不是絕對必要的,我對Javascript過敏,並且會欣賞任何非JS的想法。

編輯:我已經找到了Mozilla瀏覽器的解決方案:

-moz-user-select:none; 

回答

7

一件事徹底摧毀的視覺效果,如果我反覆點擊這樣的鏈接,移動鼠標只是一個像素,鏈接文本被選中。

它真的是一個鏈接嗎?通常你不能選擇鏈接文本。

如果您正在使用例如。一個div作爲人造鏈接,也許你應該使用鏈接(如果它帶有真正的href),或者如果它只是用於腳本的輸入按鈕(儘管這需要一些樣式來丟失瀏覽器的默認樣式,這有點痛苦)。

否則,Safari /鉻/ Konqueror的複製Mozilla的財產下了自己的名字:

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

對於其他瀏覽器,你需要一個JavaScript的解決方案。注意onselectstart返回false僅在IE和Safari/Chrome中足夠;對於Mozilla和Opera而言,還必須返回錯誤onmousedown。這也可能會阻止click開火,因此您必須在返回false之前執行mousedown處理程序中按鈕的計劃腳本,而不是onclick

你當然也可以從腳本分配這些處理程序,以避免搞亂了標記,如:

<div class="button">...</div> 

.button { -moz-user-select: none; -webkit-user-select: none; -khtml-user-select: none; } 

function returnfalse() { 
    return false; 
} 

var divs= document.getElementsByTagName('div'); 
for (var i= divs.length; i-->0;) 
    div.onselectstart= returnfalse; 
+0

非常好,完整。謝謝! – 2009-10-28 15:47:24

相關問題