1

为什么这不起作用?仅加载页面。不打印。在这里,我获取 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();
};
4

5 回答 5

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();
    };​
于 2012-07-10T04:52:31.380 回答
2

替换这一行:

printwindow.onload = function() {                               
    printwindow.self.focus();
    printwindow.self.print();
};

有了这条线:

printwindow.document.getElementsByTagName('iframe')[0].onload = function () {
    printwindow.self.focus();
    printwindow.print();
};
于 2012-07-10T04:59:53.537 回答
1

您是否尝试过没有自我,例如printwindow.print()

于 2012-07-10T04:42:23.203 回答
1
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>');
于 2012-07-10T05:53:05.280 回答
0

注意https://developer.mozilla.org/en-US/docs/Web/API/Window/print#Notes

从 Chrome 46.0 开始,此方法被阻止在 中,<iframe>除非其沙盒属性值为allow-modals

于 2018-08-20T21:09:32.223 回答