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