【问题标题】:Overriding a JavaScript results in infinite loop in IE but not in Firefox覆盖 JavaScript 会导致 IE 中的无限循环,但不会在 Firefox 中
【发布时间】:2013-05-24 23:22:39
【问题描述】:

我正在使用以下代码来覆盖名为dismissRelatedLookupPopup() 的JavaScript 函数。在 Firefox 中,这没有问题(显示一次警报并运行我的代码),但在 Internet Explorer 7 中,它会导致无限循环,永远显示警报()。我这样做是因为我不控制调用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()。

【问题讨论】:

    标签: javascript internet-explorer firefox cross-browser


    【解决方案1】:

    我很确定要更改此行:

    dismissRelatedLookupPopup = function dismissRelatedLookupPopup(win, chosenId)
    

    dismissRelatedLookupPopup = function (win, chosenId)
    

    能治好你的病。

    【讨论】:

    • 宾果游戏!谢谢一堆。指出来之后,就很明显了。我什至想知道为什么 Firefox 接受此代码...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2019-08-22
    相关资源
    最近更新 更多