window.open的url为空,等待动态html加载,然后打印

window.open with blank url wait for dynamic html to load then print

本文关键字:html 加载 然后 打印 动态 等待 url 为空 window open      更新时间:2023-09-26
<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不会启动,可能是因为窗口一打开,页面就已经加载了。我想做的是先加载整个页面,然后打印。我发布的脚本没有做到这一点。

Martin,用你的代码:

<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>

它用铬打印出一张空白页。

编辑:

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。但实际上只有一个需要onload(我很确定……(。但为了给你更多信息,在我的场景中,变量html可以是无限数量的图像、随机文本、表格等。它可以是任何东西。感谢Martin耐心地重读这篇文章并回复。

Jeff,为了使它能与图像一起使用,我粘贴了下面的一个示例。然而,根据最终页面的具体外观,可能需要一个更通用的解决方案。你的页面会更复杂吗?

<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>

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