2009-02-05 7 views
1

다음 코드를 사용하여 dismissRelatedLookupPopup()이라는 JavaScript 함수를 재정의합니다. Firefox에서는 문제없이 작동하지만 (경고를 한 번 표시하고 코드 실행) Internet Explorer 7에서는 alert()를 영원히 표시하는 무한 루프가 발생합니다. dismissRelatedLookupPopup()이 호출 된 코드를 제어하지 않기 때문에이 작업을 수행하고 있는데, 호출 될 때 내 자신의 후크를 추가하고 싶습니다. 이 작업을 수행 할 수있는 브라우저 간 방법이 있습니까?JavaScript에서 재정의하면 IE에서는 무제한 루프가되지만 Firefox에서는 그렇지 않습니다.

old_dismissRelatedLookupPopup = dismissRelatedLookupPopup; 
dismissRelatedLookupPopup = function dismissRelatedLookupPopup(win, chosenId) { 
    alert("i hate ie"); 
    old_dismissRelatedLookupPopup(win,chosenId); 
    var name = windowname_to_id(win.name); 
    var elem = document.getElementById(name); 
    elem.onchange(); 
} 

: 그것은 자바 스크립트가 직접 요소의 값을 업데이트 할 때 (. 즉 elem.value = 1) 해당 요소의 onchange를() 이벤트가 발생하지 않을 것이라는 것이 나의 이해이다. 이것이 값이 업데이트 될 때 onchange()를 강제 실행하는이 코드를 포함하는 이유입니다.

답변

4

나는이 라인을 변경하는 것을 확신 :

dismissRelatedLookupPopup = function dismissRelatedLookupPopup(win, chosenId) 

dismissRelatedLookupPopup = function (win, chosenId) 

에 무엇을 괴롭히는에게 나중에 치료합니다.

+0

빙고! 무리 감사. 당신이 그것을 지적한 후에, 그것은 꽤 분명합니다. 심지어 파이어 폭스가 왜이 코드를 받아들이는지 궁금하다 ... – user27478

+0

나는 그것이 잘못된 코드인지 확실하지 않다. 좀 이상해. – Triptych

관련 문제