2009-06-24 5 views
0

以下のシンプルなコードは、Google Chromeブラウザではなく、2つのアラートを出力します。なぜあなたは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

マウスを2回以上重ねたことはありませんか? –

+0

本当にそれはしません。ユーザーがマウスを動かすだけでダイアログをポップするのは悪いフォームです。少なくともユーザーが何かをクリックするまで待ってください。 – yfeldblum

答えて

5

mouseoverのようなイベントで警告は悪名高い(読む:予測不可能)。 mouseoverイベントの処理は状態の変化には適していますが、アラートのような何らかのやりとりにはあまり役に立ちません。

マウスオーバーが複数回発生している可能性があります(マウスオーバーはmouseenterと同じではありません - 注:よくサポートされていません)。マウスイベントの詳細については、http://www.quirksmode.org/js/events_mouse.htmlを参照してください。

異なるブラウザでは、イベントの処理方法が異なることに注意してください。 mousemoveは、ほとんどのブラウザでマウスに移動したときにのみ起動されますが、firefox(正しくリコールすれば)はほぼ常に発砲しています。あなたが本当に運が良ければ、あなたのマウスが要素の上にあった半分の時間、アラートウィンドウを閉じることができます。

-1

私が最初に提案したのはSafariを試してみると、この問題がクロム(例:クロムバグ)やウェブキットに固有であるかどうかがわかります(すべてのウェブキットベースのブラウザに共通)。 D

(私の前提はシナリオが mouseover element - > alert()だったということでしたが、アラートはモーダルであると指定されているので、アラートはありませんこのシナリオでは、ブラウザ間のイベントモデルの違いにかかわらず、が間違っている 2つのダイアログが表示されます。さらにChromeは十分に "それは非常に可能性が高いため、それはWebkitの適切な上のイベント処理を混乱させることができたので、私の提案はクロームバグかもしれません)

1

私はそれがウィンドウフォーカスと関係があると思います。リンク上でマウスを動かすと、警告ボックスが1つしか表示されません。 Mac用のSafariでは発生しません。