为什么这不起作用?仅加载页面。没有打印。在这里,我获取iframe的src并在新窗口中打开该url。
var myDivObj = document.getElementById('resumedocument').src;
var someXml = '<html><title>Resume</title><body onload="window.print();"><iframe style="height: 1000px; width: 1260px;" src="' + myDivObj + '"/></body></html>';
var printwindow = window.open('', '_blank','fullscreen=yes');
printwindow.document.write(someXml);
printwindow.onload = function() {
printwindow.self.focus();
printwindow.self.print();
};
答案 0 :(得分:2)
您不需要在onload中执行此操作,因为您正在执行自己的document.write。以下代码作为示例:
var someXml = '<html><body>Stuff</body></html>';
var printwindow = window.open('', '_blank','fullscreen=yes');
printwindow.document.write(someXml);
printwindow.print();
我认为你的问题是在加载文档时window.open方法会触发onload。此时您的文档是'',因此没有处理程序。
要等待IFRAME加载,您需要在那里移动onload处理程序。例如:
var someXml = '<html><body><iframe id=Frame width="800" height="800" src="http://jsfiddle.net" /></body></html>';
var printwindow = window.open('', '_blank','fullscreen=yes');
printwindow.document.write(someXml);
printwindow.document.getElementById('Frame').onload = function () {
printwindow.self.focus();
printwindow.print();
};
答案 1 :(得分:2)
替换此行:
printwindow.onload = function() {
printwindow.self.focus();
printwindow.self.print();
};
这一行:
printwindow.document.getElementsByTagName('iframe')[0].onload = function () {
printwindow.self.focus();
printwindow.print();
};
答案 2 :(得分:2)
var url = document.getElementById('resumedocument').src;
var printwindow = window.open('', '', 'fullscreen=yes');
printwindow.document.write('<iframe width="100%" height="100%" onload="window.print()" src='+url+'></iframe>');
答案 3 :(得分:1)
你是否在没有自我的情况下尝试,如printwindow.print()
?
答案 4 :(得分:0)
注意https://developer.mozilla.org/en-US/docs/Web/API/Window/print#Notes:
从Chrome 46.0开始,除非其沙盒属性的值为
<iframe>
,否则此方法将在allow-modals
内被禁止。