從一個小打轉轉,看來,如果在移動元素時左鍵保持在Windows7中的Chrome 30.0.1599.69 M不產生MouseEnter事件。因此,依靠onmouseenter事件給出與使用css相同的結果 - 也許這個(非觸發)事件用於向css引擎發出某些需要更改的信號。
無論如何,你可以添加代碼來處理mousemove和mouseout事件。我只是用js設置文本顏色,儘管切換類的東西可能是更好的選擇。至少js會使用css應該使用的時間,所以它不會全部開銷,儘管它在每次鼠標移動時都會重新執行它。
也許你可以在你想要刪除的處理程序中使用removeEventListener。如果是這樣,您可以附加js以使用addEventListener處理事件,並在頁面加載時附加到兩個事件。當觸發onmousemove事件時,您可以更改樣式,然後刪除處理程序。然後,在mouseout事件觸發時,您可以恢復樣式並重新附加onmove處理程序。如果試圖從事件中刪除處理程序,處理程序本身會失敗,但只能嘗試,我不會感到驚訝。它只會向js中添加幾個字節,但會極大地提高效率(在鏈接方面而不是在整個頁面方面) - 如果鼠標在鏈接上移動到100%時效果可能非常差 - 即樣式每次進入/離開週期只設置一次並清除一次。
<a href="http://www.jsfiddle.net" onmousemove = "this.style.color='red'" onmouseout = "this.style.color=''">words</a>
適用於我 - 注意:只在win7中使用chrome進行測試。
它有什麼不同?有人應該按住鼠標左鍵的唯一原因是在頁面上突出顯示文本或其他內容。你擔心一些無關緊要的事情。 – Purag
在拖動操作過程中按住鼠標左鍵。 – Chris
這不是[與Chrome的文本選擇衝突](http://stackoverflow.com/questions/11106955/change-cursor-over-html5-canvas-when-dragging-in-chrome),是嗎? –