2013-01-31 19 views
0

在使用JavaScript的FireFox中,当用户按下回车键在警报窗口上选择“ok”时,onkeyup被触发。在Internet Explore中,这不会发生。这是一个错误或预期的FireFox设计?

此HTML代码演示了我在说什么。打开它,在文本字段中输入一个字符,然后按回车键选择“ok”。在FireFox和IE中试用它。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>JS example</title> 
    <script type="text/javascript"> 
     function popup() 
     { 
       alert("bam") 
     } 
    </script> 
</head> 
<body> 
<form> 
    Each inputted character causes an alert window:<input type="text" onkeyup="popup()" /> 
</form> 
</body> 
</html> 

这是设计还是这是一个问题?你如何防止FireFox再次发射?

编辑:我发现它on bugzilla,bugzilla有一个“投票”或同等功能吗?当我试图排除故障时,通过误入歧途,我正在寻找被调用的函数中的无限循环/递归。

+0

就我个人而言,我会考虑一个错误。您可以查看(大量的)Bugzilla数据库,或者只是记录一个明确的错误。 – Pointy

+0

如果您在警报之前将输入的焦点从输入改变,该怎么办?这是否会阻止不需要的行为? –

+0

如果您在示例中使用** onkeypress **,则两个浏览器都会触发一次字符输入,而不是在模态警报中按Enter键时触发。我无法想象需要担心 - 警报,确认和提示主要在后视窗中,除了大量旧教程外。 – kennebec

回答

1

这是因为Firefox比其他浏览器更快速地销毁其警报,并且在Enter键仍然关闭的情况下焦点可能返回到您的字段。通过长按Enter键可以在其他浏览器中重现此操作。