我写了一个小的JavaScript函数,当
form
输入文本字段触发 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();">
etc...
onfocus
应该在元素获得焦点时触发。它并没有说“只要元素保持焦点”。与onfocus
相反的是onblur
,它被定义为“当元素失去焦点时触发”,而且onblur
只会触发一次。 - Ayushconsole.log
而不是alert
,它将完美地工作,因为当警报被“确认”后,Chrome 将焦点返回到input
元素,触发onfocus
事件处理程序进入无限循环。 - Some Guy