2009-05-21 34 views
16

這是一個特定的問題,所以我會立即明白這一點。如何使用JavaScript臨時禁用文本選擇?

我工作的一個短期和簡單的拖放和Web應用程序的一部分掉落常規,雖然拖放位正常工作,該網站的操作,因爲瀏覽器仍對中去所有醜陋tastic默認操作,並在文本選擇工作。

我已經嘗試了一些解決方案,主要涉及從mousedown返回false或點擊事件,儘管它們在某些瀏覽器中禁用文本選擇,但它們似乎也完全禁用了mouseup事件,從而破壞了「drop」位腳本並將此perma浮動圖標懸掛在鼠標周圍 - 無趣。

我真的不希望文本選擇是完全消失了,我只是想表明,瀏覽器...不這樣做的同時拖動,如果是有道理的。由於我知道受影響的區域(涉及iframe),我可以輕鬆地將屬性應用於受影響的元素等。如有必要,我可以發佈代碼,但我正在尋找更多的常規解決方案。由於這只是一種美學,所以我正在尋找一種適用於大多數瀏覽器的修復方法,但這並不是那麼重要。

謝謝!

+0

...和冗餘冠軍的攻擊開始了,我要踢自己。^_ ^我真的應該知道「程序化」隱含在這裏。 – 2009-05-21 06:04:08

回答

18

在W3C的瀏覽器,你可以調用event對象的preventDefault方法。 IE相當於將returnValue設置爲false

function stopDefault(e) { 
    if (e && e.preventDefault) { 
     e.preventDefault(); 
    } 
    else { 
     window.event.returnValue = false; 
    } 
    return false; 
} 

編輯:只是重新讀取問題,你可能還需要防止在處理實際拖動部分代碼的默認操作,而不是隻在初始鼠標按下或點擊。

+0

這有效,但它似乎殺死了mouseup事件。這樣做後,有沒有辦法檢測按鈕被釋放的時間? – 2009-05-21 18:30:08

0

據我所知,拖動的元素必須被定位在下鼠標指針的其他元素。如果它將隨鼠標指針一起移動,則會阻止頁面上的任何選擇。

+1

這似乎不是真的。我使用的方法是一個幽靈方法,我創建了一個拖放對象的虛擬副本,並且實際上並沒有從舊頁面中刪除它,直到放下成功爲止。 – 2009-05-21 18:20:53