Window.print()不起作用

时间:2012-07-10 04:35:31

标签: javascript printing window

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

5 个答案:

答案 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内被禁止。