window.open with blank url等待动态html加载然后打印

时间:2015-07-01 23:19:23

标签: javascript wait window.open

<script>
   var win = window.open();
   win.document.body.innerHTML = "this is html that I want to print";
   win.onload = function () { win.print(); }
</script>

一切正常但是打印,我如何等待页面加载带有空白URL的动态html,然后打印?

我认为没有办法做到这一点,就像我下面的用户一样,onload可能不会开火,因为只要窗口打开,页面就已经加载了。我要做的是首先加载整个页面然后打印。我发布的脚本没有这样做。

马丁,使用你的代码:

<script>
var win = window.open();
win.document.body.innerHTML = "<img src='https://upload.wikimedia.org/wikipedia/commons/2/24/Willaerts_Adam_The_Embarkation_of_the_Elector_Palantine_Oil_Canvas-huge.jpg'/>";
win.print();
</script>

在Chrome中,它会打印一个空白页。

编辑:

Martin,onload img属性就行了。以下是我为修改脚本所做的工作:

<script>
 var win = window.open();
 var html = "this is some test html <br><img src='https://upload.wikimedia.org/wikipedia/commons/2/24/Willaerts_Adam_The_Embarkation_of_the_Elector_Palantine_Oil_Canvas-huge.jpg'/>";
 html = html.replace("<img ","<img onload='window.print();' ");
 win.document.body.innerHTML = html;
</script>

所以所有img标签都会添加一个onload = window.print。但实际上只有其中一个需要上传(我很确定......)。但是为了给你提供更多信息,在我的场景中,变量html可以是无数个图像,随机文本,表格等等。它可以是任何东西。感谢Martin耐心重读这个帖子并回复。

1 个答案:

答案 0 :(得分:0)

杰夫,为了让它与图像一起使用,我在下面粘贴了一个例子。但是,根据最终页面的确切位置,可能需要更通用的解决方案。你的页面会更复杂吗?

<script>
     var win = window.open();
     win.document.body.innerHTML = "<img src='https://upload.wikimedia.org/wikipedia/commons/2/24/Willaerts_Adam_The_Embarkation_of_the_Elector_Palantine_Oil_Canvas-huge.jpg' onload='window.print();'/>";
</script>

这适用(没有图像):

<script>
    var win = window.open();
    win.document.body.innerHTML = "this is html that I want to print";
    win.print();
</script>

我不认为你需要加载,因为你没有加载页面,所以可能它不会被解雇。