Переопределение JavaScript приводит к бесконечному циклу в IE, но не в Firefox - PullRequest
1 голос
/ 05 февраля 2009

Я использую следующий код для переопределения функции JavaScript с именем dismissRelatedLookupPopup (). В Firefox это работает без проблем (отображает предупреждение один раз и запускает мой код), но в Internet Explorer 7 это приводит к бесконечному циклу, который отображает alert () навсегда. Я делаю это, потому что я не контролирую код, где вызывается dismissRelatedLookupPopup (), и я хотел бы добавить собственный хук, когда он вызывается. Есть ли кросс-браузерный способ сделать это?

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();
}

Примечание : Насколько я понимаю, когда JavaScript обновляет значение элемента напрямую (т.е. elem.value = 1), событие onchange () этого элемента не будет запускаться. Вот почему я включаю этот код для принудительного включения onchange () при обновлении значения.

1 Ответ

4 голосов
/ 05 февраля 2009

Я почти уверен, что меняю эту строку:

dismissRelatedLookupPopup = function dismissRelatedLookupPopup(win, chosenId)

до

dismissRelatedLookupPopup = function (win, chosenId)

вылечит то, что беспокоит тебя.

...