为IE6中新打开的窗口设置OnLoad事件

2023-12-14

我需要为新弹出的窗口设置 onload 属性。 以下代码适用于 Firefox:

<a onclick="printwindow=window.open('www.google.com');printwindow.document.body.onload=self.print();return false;" href='www.google.com'>

但是,当我在 IE 中尝试此操作时,出现错误 - “printwindow.document.body null 或未定义”

目标是弹出一个新窗口,并在打开后调用该窗口的打印对话框。

关于如何进行这项工作有任何线索吗? 重要的是不要在目标页面的其他地方使用 javascript,因为我无法控制它。所有功能都必须包含在我上面发布的链接中。


虽然早期的答案正确地指出新窗口必须来自同一域,但他们错误地回答了为什么他收到错误“printwindow.document.body null 或未定义”。这是因为 IE 不会从 window.open() 返回任何状态,这意味着您可以在 onload 可用之前打开一个页面并尝试访问它。

因此你需要使用 setTimeout 之类的东西来检查。例如:

printwindow = window.open('print.html');
var body;
function ieLoaded(){
    body = printwindow.document.getElementsByTagName("body");
    if(body[0]==null){
        // Page isn't ready yet!
        setTimeout(ieLoaded, 10);
    }else{
        // Here you can inject javascript if you like
        var n = printwindow.document.createElement("script");
        n.src = "injectableScript.js";
        body.appendChild(n);

        // Or you can just call your script as originally planned
        printwindow.print();
    }
}
ieLoaded();

这个有待进一步讨论here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为IE6中新打开的窗口设置OnLoad事件 的相关文章