我正在使用以下代码覆盖名为 dismissRelatedLookupPopup() 的 JavaScript 函数。在 Firefox 中,这没有问题(显示一次警报并运行我的代码),但在 Internet Explorer 7 中,它会导致无限循环,永远显示 alert()。我这样做是因为我不控制调用 dismissRelatedLookupPopup() 的代码,并且我想在调用时添加我自己的钩子(Hook)。有没有跨浏览器的方法来做到这一点?
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() 的原因。
最佳答案
我很确定改变这一行:
dismissRelatedLookupPopup = function dismissRelatedLookupPopup(win, chosenId)
到
dismissRelatedLookupPopup = function (win, chosenId)
会治愈你的病痛。
关于javascript - 覆盖 JavaScript 会在 IE 中导致无限循环,但在 Firefox 中不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516993/