window.open的url为空,等待动态html加载,然后打印
window.open with blank url wait for dynamic html to load then print
<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>
我认为你不需要加载,因为你没有加载页面,所以它可能不会启动。
相关文章:
- Webpack:如何将原始HTML加载为React JSX
- 画布 HTML 加载时间
- 使用 Ajax 在 html 加载后调用 jquery 插件
- 用javascript(不带外部文件)将html加载到另一个html中
- 错误 404 时,通过 jQuery 将 HTML 加载到 DIV 中
- 如何在将 html 加载到对话框中后更改标签的文本
- 如何将数据从服务器呈现的 html 加载到模型中
- jQuery 从外部 html 加载内容
- Ajax 将 html 加载到页面上并使用页面 js 不起作用
- 如何在没有安全警告的情况下将一个 html 加载到另一个 html 中
- 安卓:根据上一次活动列表中的选择,修改本地静态html加载的JS
- 在AppStore发布时,iOS应用程序上的index.html加载路径不正确
- 使jquery.load在HTML加载之前发生
- 使用jqueryload方法将ajax响应数据作为内部html加载到页面元素中
- HTML加载用户单击按钮时输入的输入字段数
- jQuery Mobile从新html加载第二个页面
- 使用ajax将html加载到Datatable子行中
- 使用JavaScript将HTML加载到DIV
- 使用JS和JQuery替换AJAX中的字符串或html加载
- js函数加载的页面无法使用js函数js-html加载另一个页面