0

为什么下面的代码生成TypeError: document.getElementById("docPrint") is null

var printwindow = window.open('', '', 'fullScreen=no');
printwindow.document.write('<iframe id="docPrint" width="100%" height="100%" src="http://localhost:8080/hiring/docs/Keneth _1340800082258/Keneth _resume_1340800082258.pdf"></iframe>');
printwindow.self.focus();
document.getElementById('docPrint').focus();
document.getElementById('docPrint').contentWindow.print();
4

3 回答 3

3

您正在跨两个窗口进行操作。

printwindow.document.write
document.getElementById

如果你想得到你在弹出窗口中创建的元素,那么你必须调用它的 gEBI 方法。

printwindow.document.write
printwindow.document.getElementById
于 2012-07-11T11:51:52.237 回答
1

预先printwindow.添加到每个实例document.getElementById

printwindow.document.getElementById('docPrint').focus();
printwindow.document.getElementById('docPrint').contentWindow.print();
于 2012-07-11T11:52:42.743 回答
1

您需要在对 document.getElementById 的调用前加上“printwindow”:

printwindow.document.getElementById('docPrint').focus();
printwindow.document.getElementById('docPrint').contentWindow.print();

您可能还希望在变量中保留对元素的引用,以避免样板文件

var el = printwindow.document.getElementById('docPrint');
el.focus();
el.contentWindow.print();
于 2012-07-11T11:53:58.950 回答