2012-02-23 63 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