首页 \ 问答 \ 确定浏览器是否支持打印(Determine whether browser supports printing)

确定浏览器是否支持打印(Determine whether browser supports printing)

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

我的Android手机有一个window.print()函数,但它(不出意外)没有做任何事情。

我再次提出这样的问题,因此在SO的主题上有一个很好的问题:-)


I think the answer to this is almost certainly "no", because I've done a little testing and searching around, but is there any trick to detect whether window.print() even might work from inside a page (i.e., from JavaScript)? I know that even on a desktop/laptop it's never going to be possible to know whether there's a printer configured on the system, for example, but at least the browser will put up a print dialog.

My Android phone has a window.print() function but it (unsurprisingly) doesn't do anything.

Again I'm asking mostly so there's a good question on the topic at SO :-)


原文:https://stackoverflow.com/questions/9268840
更新时间:2019-06-21 03:33

最满意答案

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

资料来源:

编辑:

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

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

Unfortunately it looks like a no. The window.print() function is not part of the EMCAScript specification. This means that there's no requirement for it to be part of the JavaScript language, and no proper documentation for its implementation. It's undefined behaviour and so testing for it looks very difficult.

Sources:

EDIT:

Cute little script I wrote to test my browsers, just checks the print function exists and then asks to print:

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

相关问答

更多

如何可靠地确定浏览器是否支持鼠标悬停事件?(How can I reliably determine if a browser supports mouse-over events?)

您可以做出与检测键盘或触摸输入的解决方案相反的结果。 只需等待一个实际的触摸事件或鼠标移动事件,并根据此决定。 如果您检查事件处理程序的存在,则即使浏览器当前没有在支持该事件的硬件上运行,浏览器也可能会指出它有事件,因此唯一可靠的方法是等待并查看哪些实际事件触发。 You could do the opposite of the solution for detecting keyboard or touch input. Just wait for an actual touch event o ...

检测浏览器是否支持jQueryMobile(Detect if browser supports jQueryMobile)

文档: http://jquerymobile.com/demos/1.0a4.1/#docs/about/platforms.html http://jquerymobile.com/gbs/ $ .mobile.gradeA() Docs: http://jquerymobile.com/demos/1.0a4.1/#docs/about/platforms.html http://jquerymobile.com/gbs/ $.mobile.gradeA()

检查浏览器是否支持`.textContent`的最佳方法?(Best way to check if browser supports `.textContent`?)

随着... 'textContent' in document.body ...表达式您只需检查document.body对象中的属性(textContent)存在性,而不实际检查其值。 是的,在IE8中是false的。 With... 'textContent' in document.body ... expression you'll just check a property (textContent) existence in document.body object, withou ...

在浏览器中检测HTTP2 / SPDY支持(Detect HTTP2/SPDY Support in Browser)

不,不是真的。 至少以一种有意义或可行的方式。 服务器已经提供了所有资产后,前端javascript将运行。 您想要做的一切都将在服务器端完成。 符合SPDY的浏览器应自动与SPDY服务器协商。 您需要做的就是配置它( nginx和apache )。 您还可以使用https响应发送Alternate-Protocol标头。 如果可能的话,这将使浏览器在将来响应SPDY请求(我在更新的SPDY规范中找不到,因此可能是过时的信息。请加盐)。 如果您想知道某个网站是否已使用SPDY提供,则在chrome ...

Javascript支持集?(Does Javascript supports Sets?)

你的钥匙串是? 每个JavaScript对象都是一个地图,这意味着它可以代表一个集合。 如您在提到的页面中所述,每个对象只接受每个键的一个副本(属性名称)。 键/属性的值无关紧要。 Are your keys strings? Every JavaScript object is a map, which means that it can represent a set. As illustrated in the page you mentioned, each object will acc ...

App Store是否接受自定义浏览器?(Does App Store accepts Custom Browser? [closed])

是的,App Store接受自定义浏览器,如果您根据App store指南开发它们。 在应用程序商店中有一些浏览器应用程序,如“Chrome”,“Firefox”,“Opera Mini”,“Dolphin”,“Mercury”,“Puffin Browser” 。 Yes, App store accepts custom browsers, if you develop them according to App store guide line. There are some browser ...

如何将rtsp视频运行到浏览器中?(How to run rtsp video into browser?)

我目前还不知道任何本机支持RTSP流的浏览器。 通常的方法是使用代理或流媒体服务器将流转换为HLS或DASH之类的东西,但是你说你做不到。 确实存在一个VLC浏览器插件当然支持这个(最近没有测试过)但是它不包括对chrome的支持,如果你正在寻找跨浏览器支持,它可能会排除它: https://wiki.videolan.org/Documentation%3aWebPlugin/ I am not aware of any browser which natively support RTSP s ...

相关文章

更多

最新问答

更多
  • Unity着色器错误;(Unity shader error; presumably in if statement)
  • 如何在Liferay portlet中设置Cookie?(How to set a Cookie in Liferay portlet?)
  • C#只读访问List <>或其他集合,或ToArray()魔术(C# readonly access to List<> or other collection, or ToArray() magic)
  • 如何使用Google Web工具包创建登录应用程序?(How to create a login application using Google web tool kit? [closed])
  • 如何使我的函数返回结果作为全局变量?(How to make my function return results as a global variable?)
  • 为什么我的网站需要“启用32位应用程序”?(Why does my website need “Enable 32-bit applications”?)
  • 红宝石数组具有相同的值(ruby array of hash with same value)
  • Android(在Scala中):StackOverflowError取决于何时启动线程?(Android (in Scala): StackOverflowError depends on when to start a thread?)
  • 适用于iOS应用的通用链接(Universal Links for iOS apps)
  • 创建并打开文件linux编程(create and open file linux programming)
  • Datepicker,第2个日期是从第1个日期开始的X天(Datepicker, 2nd date is X days from 1st date)
  • 背景大小过渡不起作用(Transition on background-size doesn't work)
  • 在React / Redux中的On Click函数中传递Prop(Passing a Prop in an On Click Function in React/Redux)
  • 关键字在代码中做了什么,是否有没有此关键字的替代方法?(what does the keyword this does in the code and are there any alternate methods without this keyword? [duplicate])
  • 反向设计FoxPro / dBsae数据库以创建EER模型(Reverse Engineer a FoxPro/dBsae database to create the EER model)
  • 在R中的变量中组合具有相同值的行(Combine rows that have same value in a variable in R [duplicate])
  • SQL Server:非空唯一主键(SQL Server: Non-null unique vs. Primary Key)
  • 将扩展ASCII字符代码转换为ISO-8859-1(Convert extended ASCII character codes to ISO-8859-1)
  • 如何在.NET中读取m4a文件中的标签?(How to read tags out of m4a files in .NET?)
  • 呼叫链接的性能提升?(Performance gain on call chaining?)
  • 风景名胜区规划设计文本里面都包含哪些内容?推荐一家旅游规划设计公司?谢谢!
  • 如何在String中将字符串转换为枚举?(How do I convert a string to enum in TypeScript?)
  • SQLite SELECT出现异常如何解决它?(SQLite SELECT gives exception How to fix it?)
  • NSLog不会从ViewController类输出,而是来自AppDelegate类的WILL。(NSLog will NOT output from the ViewController class, but WILL from the AppDelegate class. iOS:Objective C)
  • 更改UIPicker突出显示的标签宽度(change UIPicker highlighted tab width)
  • 空心倒五角形(Hollow inverted pentagon)
  • 如何设置仅使用OpenID的Plone站点(How to setup Plone sites working only with OpenID)
  • Paperclip缺少Amazon S3的协议(https)(Paperclip is missing the Protocol (https) with Amazon S3)
  • 从宏中部署netbeans中的ANT文件(Deploy ANT file in netbeans from macro)
  • XMLReader是未知的(XMLReader is unknown)