【问题标题】:Determine whether browser supports printing判断浏览器是否支持打印
【发布时间】:2012-03-05 08:18:12
【问题描述】:

我认为这个问题的答案几乎肯定是“不”,因为我已经做了一些测试和搜索,但是有什么技巧可以检测 window.print() 是否甚至 可能在页面内(即,来自 JavaScript)?我知道即使在台式机/笔记本电脑上,也永远不可能知道系统上是否配置了打印机,但至少浏览器会弹出一个打印对话框。

我的 Android 手机有一个 window.print() 功能,但它(不出所料)什么也没做。

再次,我主要是在问,所以在 SO 上有一个关于这个主题的好问题 :-)

【问题讨论】:

    标签: javascript browser printing cross-browser modernizr


    【解决方案1】:

    不幸的是,它看起来像一个不。 window.print() 函数不是 EMCAScript 规范的一部分。这意味着它不需要成为 JavaScript 语言的一部分,也没有适当的实现文档。这是未定义的行为,因此对其进行测试看起来非常困难。

    来源:

    编辑:

    我为测试浏览器而编写的可爱小脚本,只是检查打印功能是否存在,然后要求打印:

    if(window.print) {
        if(confirm('I can print. Would you like to?'))
            window.print()
    }
    

    【讨论】:

    • 是的,这就是我的决定。好吧,也许现在这也可以作为一个很好的参考点:-)
    • @Pointy 也许可以创建这个社区 wiki 并建议人们添加任何不支持打印功能的浏览器?
    • 感谢您的提琴,但它表明您的脚本不起作用。至少在我的设备(使用 windows phone 8)上,它会显示确认对话框,但如果我接受,它什么也不做。
    • @Fernando 这是很久以前的事了。但我相当确定这个答案的目的是证明它不会起作用。
    • Sorry Jivings,你是对的,我以为这是一个测试浏览器是否可以打印的脚本,但它是一个测试你是否可以使用 window.print 测试浏览器是否可以打印的脚本,我我对吗?
    【解决方案2】:

    print() 方法是同步的。这样就可以进行善后处理,以确定是否显示了打印对话框

    var start = +new Date();
    window.print();
    var delta = + new Date() - start;
    console.log(delta);
    if (delta > 100) { console.log('It worked'); }
    

    【讨论】:

    • 虽然用户必须尝试打印以测试他是否可以打印:)。无论如何,如果打印失败(不是 delta > 100),您可以使用此脚本并显示一条消息。
    • 我假设如果浏览器定义了 window.print (以避免脚本破坏试图调用它),但实际上并没有做任何事情,它需要不到 100 毫秒来处理下一行代码。我喜欢。我只是希望有一种方法可以在没有实际调用它的情况下进行测试!不过,这是我见过的最好的解决方案。
    • 顺便说一句,如果有人想知道那个加号,stackoverflow.com/questions/221539/…
    • 我用运行 iOS 4.2.1 的 iPhone 3G、运行 iOS 7 的 4S、运行 iOS 7 的 5S 和运行不知道是什么的 Galaxy Note 2 进行了测试。 4S打79-99ms范围,5S打25-26ms范围,3G打2-3ms范围(不支持打印),Note在0-3ms范围(有打印支持)。至少在 Note 上看来 print() 是异步的关闭。
    【解决方案3】:

    beforeprint and afterprint events 可能会有所帮助,但我不确定浏览器是否支持。

    编辑:Webkit does not support them

    【讨论】:

      猜你喜欢
      • 2012-06-25
      • 2016-12-05
      • 2012-04-28
      • 2011-06-03
      • 2013-02-09
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2014-10-05
      相关资源
      最近更新 更多