2011-05-27 22 views
4

請考慮以下代碼。如果我點擊cmbMonkeys,它會在Google Chrome中導致無限循環的警報消息。我對cmbPeople的解決方法工作正常。有沒有人知道另一種方式來防止在焦點或模糊事件上顯示警報時發生無限循環,而不禁用和重新啓用事件?是否可以防止Chrome在焦點事件上顯示警報時導致無限循環,而不禁用和重新啓用事件?

<html> 
<head> 
    <script> 
     var eventHandler; 

     function cmbPeople_OnFocusHandler() { 
      alert("focus"); 
     } 

     function cmbPeople_CallFocusHandler(control) { 
      eventHandler = control.onfocus; 
      control.onfocus = null; 
      cmbPeople_OnFocusHandler(); 
     } 

     function cmbPeople_CallBlurHandler(control) { 
      control.onfocus = eventHandler; 
     } 

     function cmbMonkeys_FocusHandler(control) { 
      alert("I like monkeys"); 
     } 
    </script> 
</head> 
<body> 
    monkeys <select id="cmbMonkeys" onfocus="cmbMonkeys_FocusHandler(this)"></select> 
    people <select id="cmbPeople" onfocus="cmbPeople_CallFocusHandler(this)" onblur="cmbPeople_CallBlurHandler(this)"></select> 
</body> 
</html> 

回答

4

用一個簡單的狀態處理程序,也許?

var isFocus = false; 
function cmbPeople_CallFocusHandler(control) { 
    if(!focus){ 
     focus = true; 
     cmbPeople_OnFocusHandler(); 
    } 
} 

function cmbPeople_CallBlurHandler(){ 
    isFocus = false; 
} 
+0

當然:)謝謝。 – 2011-05-27 10:49:28

相關問題