2009-06-24 81 views
0

下面的簡單代碼會輸出兩個警報,而不是一個Google Chrome瀏覽器。你能告訴爲什麼只有在Chrome中?Chrome Javascript Double Alert Loop?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Can you tell?</title> 
<script language="javascript" type="text/javascript"> 

function hitme() 
{ 
alert('yep!'); 
} 
</script> 
</head> 

<body> 
<a href="#" onmouseover="hitme();">LINK</a> 
</body> 
</html> 

由鉻看到錨文本+這是行?

什麼使這個雙盒在Chrome?

+1

確定你沒有鼠標兩次? – 2009-06-24 02:49:36

回答

5

警告事件像mouseover是臭名昭着的糟糕(閱讀:不可預知)。對於狀態變化來說,鼠標懸停事件處理非常有用,但對於某種類型的交互(如警報)來說更是如此。

可能發生的事情是mouseover被多次觸發(注意mouseover與mouseenter不同 - 注意:不太好的支持)有關鼠標事件的更多詳細信息,請參閱http://www.quirksmode.org/js/events_mouse.html

重要的是要知道,不同的瀏覽器處理事件的方式不同。例如,mousemove只會在大多數瀏覽器中移動移動時觸發,但在Firefox中(如果我正確記得),它幾乎一直在觸發。同上鼠標懸停,如果你真的很幸運,你會得到一堆警報窗口,關閉半秒你的鼠標是在一個元素。

-1

我的第一個建議是嘗試Safari,這將明確該問題是否特定於chrome(例如chrome bug)或webkit(特別是所有基於webkit的瀏覽器)。可以想象的是:D

(注意,對於已經回答了這個問題的人,我的假設是場景是 mouseover元素 - > alert(),警報被指定爲模態,所以不會有在這種情況下,不正確的會出現兩個對話框,無論瀏覽器之間的事件模型差異如何,進一步的Chrome瀏覽器足以「有趣的「,使它很可能已經搞砸了事件處理上面的webkit本身,因此我的建議它可能是一個鉻錯誤)

1

我猜這是關於窗口焦點的事情;如果將鼠標移動到鏈接上足夠快,則只能獲得一個警報框。 Mac fwiw的Safari中不會發生這種情況。