Javascript onFocus事件在Google Chrome中持续触发-这是一个错误吗?

But*_*kus 3 javascript google-chrome

我编写了一个小javascript函数,用于在表单输入文本字段中触发onFocus时检查cookie。

如果找到了cookie,则会弹出一个对话框,欢迎该人返回站点。

但是在Chrome中,每次关闭对话框时,都会弹出一个新对话框。我想这是因为文本字段在技术上仍然是“关注的”。

但是在Firefox或IE9中不会发生此问题。

我在Chrome中通过添加当前已注释的行解决了该问题。但是我想知道的是,是否将此行为视为错误或正常行为,如果是正常行为,那么为什么其他浏览器的行为有所不同?

这是javascript代码示例:

//var checked = 0;
var checkIt = getCookie('cia_db');
function checkCookie() {

//  if(checked == 0) {

        if(checkIt == 'logged_in') {
            alert('Welcome back to CIA headquarters.');
            //return true;
        }
    //}
        //checked++;
}
Run Code Online (Sandbox Code Playgroud)

这是html:

<form id="form1" name="form1" action="" method="get">
<input type="text" name="username" id="username" value="smeegle" size="15" onfocus="checkCookie();">
Run Code Online (Sandbox Code Playgroud)

等等...

Dr.*_*lle 5

当警报出现时,该字段将失去focus(),当警报关闭时,chrome将焦点返回给输入,因此onfocus再次触发。

其他浏览器可能会在关闭警报后将焦点移到窗口上,因此onfocus不会再次触发。我不会称它为bug,这是一种不同的行为。

解决方案:
在alert()之前移开焦点