Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Feature detection solution for window.print() JavaScript

Question

Is there any way to detect support for window.print()? I'd prefer to detect the feature itself vs trying to go down the rabbit hole of detecting whether I'm on a mobile browser or desktop or iOS or Android or which particular mobile browser I might be on.

Background

The following links lead me to believe that:

  • Apple requires all 3rd party browsers to use UIWebView
  • UIWebView as used in non-Safari apps does nothing when you run window.print()
  • Safari on iOS does something appropriate when you run window.print()

The links:

  • 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

P.S. I looked in the Modernizr docs to see if it can detect support for printing, but didn't spot anything.

P.P.S. I see that Chrome for iOS does support printing, albeit through GCP. Here, just looking for feature detection rather than a print solution. (https://support.google.com/chrome/answer/3049815?hl=en&ref_topic=1719889)

Edit To clarify, it appears that window.print is not part of any standard: https://developer.mozilla.org/en-US/docs/Web/API/Window.print. If window.print exists in some browsers but doesn't do anything useful (e.g., isn't wired up to any browser-specific implementation of appropriate printing functionality) that is ultimately what I want to detect.

My guess is that mobile browser vendors will have something defined for window.print so that any scripts that try to call it won't error; but the call may be a No op, or may send a request the the operating system that the OS simply ignores.

The more I think about how the guts of this could be working the less hopeful I am of a simple JavaScript approach to detecting the feature, which is too bad.

like image 307
jinglesthula Avatar asked Feb 04 '14 23:02

jinglesthula


People also ask

What does window print () do in JavaScript?

print() Opens the print dialog to print the current document. If the document is still loading when this function is called, then the document will finish loading before opening the print dialog.

Can I set the window print settings with JavaScript?

The window. print() method calls the browser's build in print support plugin to print the current DOM page. you can check the documentation, it doesn't support any argument or settings. to setup the print, you can only utilize the browser's GUI( ex. enable or disable background graphics etc.)

What does window print () return?

The print() method prints the contents of the current window.

Does print work in JavaScript?

JavaScript does not have any print object or print methods.


1 Answers

This question is indeed a duplicate of Determine whether browser supports printing. See carpetsmoker's comment on this question and the answer referred to. I agree, that may be the best we can do for now.

Even if window.print isn't part of any standard, it'd be nice if browser vendors implemented and agreed upon some API for detection. Perhaps they're all internally working on an appropriate implementation for the function and so don't want to throw out there something temporary that'll be useless later. Oh, well.

like image 133
jinglesthula Avatar answered Sep 30 '22 01:09

jinglesthula