【发布时间】:2011-10-26 10:26:27
【问题描述】:
我正在为 IE 6/7/8/9 编写上下文菜单扩展。我使用 window.external.menuArguments 作为当前窗口对象。这适用于除 setTimeout/setInterval 之外的大多数常见 API。我在 IE 6-9 中对其进行了测试,setTimeout 根本不起作用,并且 setInterval 在某些情况下会导致内存耗尽。是否有解决方法,我是否遗漏了 MSDN 文档中的任何重要提示?
window.external.menuArguments.setTimeout(function() {
alert("setTimeout OK");
},100);
window.external.menuArguments.setInterval(function() {
alert("setInterval OK");
},100);
令人失望的 IE 在上面的测试代码中没有给我任何警报。
【问题讨论】:
-
您的代码使用什么类型的扩展?具体来说,它是显示一个窗口,还是立即关闭窗口的静默类型?我的第一个猜测是它正在破坏并取消您的回调。如果您将脚本直接注入父窗口(例如带有脚本标签的 createElement),它是否有效?
-
它是 IE 的上下文菜单扩展。我已经通过带有脚本标签的 createElement 直接将脚本注入父窗口来解决这个问题。 window.external.menuArguments 可能对动态更改当前窗口对象和文档对象有很多限制。 window.external.menuArguments 设置的事件不会被触发,包括 setTimeout/setInterval 和其他 DOM 事件,如 window.external.menuArguments.document.body.attachEvent
标签: internet-explorer settimeout setinterval