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

时间:2011-11-17 06:28:05

标签: 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++;
}

这是html:

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

等...

1 个答案:

答案 0 :(得分:4)

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

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

解决方案:
在警报()

之前删除焦点