javascript - 覆盖 JavaScript 会在 IE 中导致无限循环,但在 Firefox 中不会

标签 javascript internet-explorer firefox cross-browser

我正在使用以下代码覆盖名为 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/

相关文章:

css - Firefox 中的 Polymer 1.0 样式

html - Firefox 中的 Simpletip 位置

javascript - Ajax 之前的 JQuery .each 处理

javascript - 具有嵌套形式的 jQuery 对话框

css - 如何在 IE 上显示 CSS3 列?

Java覆盖现有的类方法

javascript - 将 Python/Boo/Ruby 类语法编译为 C/C++/LLVM/Javascript 的工具(使用 JS ArrayBuffer 提高速度)

javascript - 如何读取 Javascript 文件

javascript - 从 Rails 的集合中返回选定的值并将其发送到 URL

javascript - jQuery:变量指向实时 DOM,而不是仅在 IE 上的 DOM 副本