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)
等等...
当警报出现时,该字段将失去focus(),当警报关闭时,chrome将焦点返回给输入,因此onfocus再次触发。
其他浏览器可能会在关闭警报后将焦点移到窗口上,因此onfocus不会再次触发。我不会称它为bug,这是一种不同的行为。
解决方案:
在alert()之前移开焦点