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

标签 javascript internet-explorer onload

我需要为一个新弹出的窗口设置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 or not defined”

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

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

最佳答案

虽然之前的回答正确地指出新窗口必须来自同一个域,但他们错误地回答了为什么他得到错误“printwindow.document.body null or not defined”。这是因为 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

关于javascript - 在IE6中为新打开的窗口设置OnLoad事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/245124/

相关文章:

javascript - 有没有办法告诉你的 react 应用程序页面何时完成加载页面/ Assets ?

javascript - 将 Promise 用于 onload 和 onerror 后返回状态值

javascript - 用 JS 附加一个 body onload 事件

javascript - 为什么无法获取参数?

javascript - 在 IE 中处理 Javascript 事件顺序

angular - 在 IE 中调试 angular 2 typescript 应用程序

jquery - 需要为高性能溢出检测器集思广益一些想法

javascript - 单击图像时部分暴露的 div 向上滑动

javascript - 如何在ajax post请求laravel中传递 token ?

javascript - 提高 socket io 中的音质,将音频数据从客户端发送到服务器返回客户端