gpt4 book ai didi

javascript - 使用 Javascript 打印(部分)网页

转载 作者:太空狗 更新时间:2023-10-29 13:39:03 26 4
gpt4 key购买 nike

我知道调用浏览器“打印”对话框的两种方法(当然我使用的是搜索):

  • 文档.打印()
  • document.execCommand('print', false, null)

它们有什么区别?支持跨浏览器?论文、文档或标准?使用哪个更正确?

另一个问题:打印网页给定部分的最直接方法是什么?我知道我们可以创建新窗口或 iframe 来调用上面两种打印方法中的任何一种。哪个坑少?

最佳答案

我测试了跨浏览器打印部分网页的不同方式:Chrome、Firefox、Opera(12 和新版)、IE11、10、9 和 8。我尝试创建新的 window , 新 iframe , 或使用 existing iframe在页面上。然后试了.print().execCommand('print') .

注意:请记住,.print() 是在 window 上调用的,而 .execCommand() 是在 document 上调用的。

可以找到用于测试的代码here

如果我的测试代码有误,请纠正我,我只是想找到最清晰的方法来完成这项工作。我的结论:

  • Opera 12 无法打印网页的一部分(?)
  • IE 不 print() iframe 和窗口,当前窗口除外。
  • 调用 print()documents在 iframe 中或在 IE 中创建的窗口打破了 print()当前document .小心!
  • jQuery 插件 printThis使用 IE 的技巧来完成这项工作,而且它确实有效。唯一的异常(exception)是 Opera 12。顺便说一句,这个插件使用 print() .
  • execCommand('print')几乎无处不在,适用于任何方法(iframe、窗口)。不过 Firefox 不支持它。
  • execCommand()返回 false如果调用不成功,所以如果你不想使用插件和魔术,创建窗口或 iframe,调用 execCommand('print')如果它返回 false , 调用 print() .

还有一点:

创建 iframe很棘手:您不能直接访问它的 windowdocument(是的,您有 ContentDocument 属性,它在不同浏览器中的行为不同)。你应该命名然后调用window.frames[name]从该 iframe 获取 window 对象。不要尝试调用 window.frames(id) - 它将返回 iframe

关于javascript - 使用 Javascript 打印(部分)网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21285902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com