【发布时间】:2021-04-28 22:03:28
【问题描述】:
我今天在 IE8 中遇到了一个我似乎无法解释的问题(注意我只需要支持 IE):detachEvent 在使用命名匿名函数处理程序时不起作用。
document.getElementById('iframeid').attachEvent("onreadystatechange", function onIframeReadyStateChange() {
if (event.srcElement.readyState != "complete") { return; }
event.srcElement.detachEvent("onreadystatechange", onIframeReadyStateChange);
// code here was running every time my iframe's readyState
// changed to "complete" instead of only the first time
});
我最终发现将 onIframeReadyStateChange 更改为使用 arguments.callee(我通常避免这样做)反而解决了这个问题:
document.getElementById('iframeid').attachEvent("onreadystatechange", function () {
if (event.srcElement.readyState != "complete") { return; }
event.srcElement.detachEvent("onreadystatechange", arguments.callee);
// code here now runs only once no matter how many times the
// iframe's readyState changes to "complete"
});
什么给了?!第一个 sn-p 不应该工作正常吗?
【问题讨论】:
-
冒昧更改标题,“命名匿名函数”是矛盾的。 :-)
标签: javascript internet-explorer dom-events anonymous-function