【发布时间】:2014-02-04 23:56:19
【问题描述】:
问题
有什么方法可以检测对 window.print() 的支持吗?我更愿意检测功能本身,而不是尝试检测我是在移动浏览器还是桌面、iOS 或 Android 上,或者我可能在哪个特定的移动浏览器上。
背景
以下链接让我相信:
- Apple 要求所有 3rd 方浏览器都使用 UIWebView
- 在非 Safari 应用程序中使用的 UIWebView 在您运行 window.print() 时不执行任何操作
- iOS 上的 Safari 在您运行 window.print() 时会做一些适当的事情
链接:
- https://productforums.google.com/forum/#!topic/chrome/7wTj1dteSeI
- Javascript printing on mobile devices(ios)
- https://stackoverflow.com/a/4362472/749227
- http://daringfireball.net/linked/2012/06/28/chrome-ios
- https://stackoverflow.com/a/4362472/749227
附:我查看了 Modernizr 文档,看看它是否可以检测到对打印的支持,但没有发现任何东西。
附言我看到 Chrome for iOS 确实支持打印,尽管是通过 GCP。在这里,只是寻找特征检测而不是打印解决方案。 (https://support.google.com/chrome/answer/3049815?hl=en&ref_topic=1719889)
编辑 澄清一下,window.print 似乎不是任何标准的一部分:https://developer.mozilla.org/en-US/docs/Web/API/Window.print。如果 window.print 在某些浏览器中存在但没有做任何有用的事情(例如,没有连接到任何特定于浏览器的适当打印功能的实现),这最终是我想要检测的。
我的猜测是移动浏览器供应商会为 window.print 定义一些东西,这样任何试图调用它的脚本都不会出错;但是该调用可能是 No op,或者可能会向操作系统发送请求,而操作系统只是忽略了该请求。
我越想它的胆量如何工作,我就越不希望使用简单的 JavaScript 方法来检测该功能,这太糟糕了。
【问题讨论】:
-
重复:stackoverflow.com/questions/9268840/…(由于赏金无法举报)
-
(ab) 使用
print()的阻塞特性的答案是您最好的猜测。我也有同样的想法,想不到更好的了。但它实际上并没有检测到支持,它只是告诉你window.print()是否真的做了什么...... -
@Carpetsmoker 您介意添加对重复问题(以及您提到的答案)的引用作为此问题的答案吗?如果你愿意,我会把赏金扔给你并接受你的答案,因为这是我能想到的对副本的“正确”答案:)
-
酷,我实际上在另一个论坛上找到了这个。我应该删除我的答案吗?看到滥用反对票根本没有帮助我。我只是想帮助您找到解决方案,但鉴于您已经接受了自己的答案,在我尝试帮助这里的任何人之前,我可能应该三思而后行。
-
无意冒犯,伙计。老实说,对您的回答投反对票的人都不是我。如果有人发布了一个问题,后来发现了答案(即使答案是“哦,有一个我以前没有注意到的重复项”),将其发布为答案是合适的,如果没有其他人提供更可接受的答案,接受自己的答案。即使是被否决的答案也可以提供有关该问题的有用信息,因此我认为不删除它会增加 SO 的有用性。
标签: javascript printing browser-feature-detection