我写了一个小的javascript函数,它在表单输入文本字段中触发onFocus时检查cookie。Javascript onFocus事件不断在Google Chrome中触发 - 它是一个错误吗?
如果找到了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();">
等等
我会认为这是一个错误,因为'onfocus'应该火'当一个元素获得focus'警报()之前删除的焦点。它没有说'只要一个元素在焦点上'。与'onfocus'相反的是'onblur',它被定义为“元素失去焦点时触发”,而“onblur”只触发一次。 – xbonez
我认为这也是一个bug。在Chrome 17中没有修复。也许你应该提交一个错误报告。 http://jsfiddle.net/x2Zvz/ – mrtsherman
@mrtsherman我不会称这是一个错误。尝试使用'console.log'而不是'alert',它可以很好地工作,因为当警报是'okay-ed'时,Chrome会将焦点返回到'input'元素,并在无穷无尽的情况下触发'onfocus'事件处理程序循环。 –