【发布时间】:2015-06-15 02:08:21
【问题描述】:
假设我有一个 iframe,并且这个 iframe 包含一些 JavaScript:
function triggerError() {
throw "error";
}
window.onerror = function() {
alert('error detected, initial iframe');
}
我们还假设从根窗口中我有一个名为“win”的 iframe 的引用。我可以拨打win.triggerError()触发警报。
但是,如果我尝试从外部覆盖错误函数,它将不起作用。
win.onerror = function () {
alert('error detected, set from parent window');
};
win.onerror 似乎在外部检查时会发生变化,尽管从 iframe 窗口内部检查 onerror 的值表明原始函数仍然存在。
但是,我发现这是可行的:
win.test = function () {
this.onerror = function () {
alert('error detected, set using test()');
};
};
win.test();
这是为什么?这是 this/范围问题,还是与浏览器相关的问题?
注意:很遗憾,我正在使用带有 Quirks 模式的 IE9。
【问题讨论】:
标签: javascript iframe this onerror