2012-02-23 77 views
0

Firefox在链接上触发焦点事件(Opera也会如此)。当我试图附加一个处理程序链接,以防止它获得焦点,而是把焦点传递给邻居输入字段发生了一些奇怪的事情。 Firefox两次触发焦点事件,而Opera只做一次。可能它与某些js事件的捕获和冒泡阶段有关,但我不确定,在两种情况下都会导致.eventPhase属性的jQuery事件obj等于2,即冒泡。Firefox焦点的奇怪行为(重复火灾)javascript-event

下面有一个测试页面:

<!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> 

当点击时有一个叫数是呼应到控制台。

+0

为什么你把里面的CDATA脚本? HTML5不是XML! – ThiefMaster 2012-02-24 11:15:31

+0

这是偶然的,谢谢 – user907860 2012-02-24 13:26:21

回答

0

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

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

Example fiddle

+0

我的赞赏,但我需要确切地使用焦点,因为我的目的是防止链接在所有情况下都获得关注,包括使用“tab”键。其实这不是问题,因为我用另一种方式解决了问题。但是当我寻找解决方案时,我遇到了奇怪的事情。因此,我很有兴趣了解这种情况下发生的事情,而不是将焦点转移到点击 – user907860 2012-02-23 09:19:21