Firefox焦点javascript事件的奇怪行为(重复火灾)

时间:2012-02-23 09:03:46

标签: javascript firefox focus

Firefox在链接上激活焦点事件(Opera也是如此)。当我试图将一个处理程序附加到链接以防止它获得焦点,而是将焦点传递给邻居输入字段时发生了一些奇怪的事情。 Firefox会两次触发焦点事件,而Opera只会执行一次。可能它以某种方式与js事件的捕获和冒泡阶段相关联,但我不确定,因为在两种情况下.jvent事件obj的事件.eventPhase属性等于2,即泡沫。

下面有一个测试页:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Text1</title>
</head>
<body>
    <a href="#" id="click">click</a>
    <input type="text" id="to_pass">
    <script type="text/javascript">
        var i = 1;
        document.getElementById('click').onfocus = function() {
            console.log(i);
            i += 1;
            document.getElementById('to_pass').focus();
            return false;
        }
    </script>
</body>
</html>

当发生点击时,呼叫计数会回显到控制台中。

1 个答案:

答案 0 :(得分:0)

在这种情况下,请使用click()代替focus()

var i = 1;
$('#click').click(function(ev) {
    ev.preventDefault();
    console.log(i);
    $('#to_pass').focus();
    i += 1;
})

Example fiddle