我认为这个问题的答案几乎肯定是“不”,因为我已经做了一些测试和周围进行搜索,但没有任何技巧,从里面检测是否window.print()
甚至威力工作页面(即从JavaScript)?我知道,即使在台式机/笔记本电脑上,也无法知道系统中是否配置了打印机,但至少浏览器会打印一个对话框。确定浏览器是否支持打印
我的Android手机有一个window.print()
功能,但它(毫不奇怪)不会做任何事情。
再次声明,我问大多所以有在SO :-)
我认为这个问题的答案几乎肯定是“不”,因为我已经做了一些测试和周围进行搜索,但没有任何技巧,从里面检测是否window.print()
甚至威力工作页面(即从JavaScript)?我知道,即使在台式机/笔记本电脑上,也无法知道系统中是否配置了打印机,但至少浏览器会打印一个对话框。确定浏览器是否支持打印
我的Android手机有一个window.print()
功能,但它(毫不奇怪)不会做任何事情。
再次声明,我问大多所以有在SO :-)
的主题一个很好的问题不幸的是,它看起来像一个没有。 window.print()
函数不是EMCAScript规范的一部分。这意味着它不需要成为JavaScript语言的一部分,也没有适合它的实现的文档。这是未定义的行为,因此对它进行测试看起来非常困难。
来源:
编辑:
可爱的小剧本我写来测试我的浏览器,只检查打印功能存在,然后问打印:
if(window.print) {
if(confirm('I can print. Would you like to?'))
window.print()
}
beforeprint and afterprint events可能有帮助,但我不确定浏览器支持。
编辑:Webkit的does not support them
print()
的方法是同步的。这可以做后果,以便决定是否显示打印对话框
var start = +new Date();
window.print();
var delta = + new Date() - start;
console.log(delta);
if (delta > 100) { console.log('It worked'); }
尽管用户必须尝试打印以测试他是否可以打印:)。无论如何,如果打印失败(不是delta> 100),您可以使用此脚本并显示一条消息。 – Fernando 2014-02-05 11:12:51
我假设如果一个浏览器定义了window.print(以避免脚本打破,试图调用它),但实际上并没有做任何事情,它将花费不到100ms来处理下一行代码。我喜欢。我只是希望有一种方法来测试没有实际调用它!不过,这是我见过的最好的解决方案。 – jinglesthula 2014-02-13 20:50:46
顺便说一句,万一任何人想知道加号,http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-new-date – jinglesthula 2014-02-13 22:04:42
是的,这就是我几乎决定。好吧,也许现在这将作为一个很好的参考点:-) – Pointy 2012-02-13 22:52:50
我也写了这个测试我的浏览器:http://jsfiddle.net/zdY4d/4/ – Jivings 2012-02-13 22:53:29
@Jivings添加小提琴到您的答案... – powtac 2012-02-13 23:03:47