W3C home > Mailing lists > Public > whatwg@whatwg.org > December 2009

[whatwg] window.print() when printing is not supported

From: Markus Ernst <derernst@gmx.ch>
Date: Mon, 28 Dec 2009 22:14:40 +0100
Message-ID: <4B391FC0.3020600@gmx.ch>
Michael A. Puls II schrieb:
> On Mon, 28 Dec 2009 14:39:06 -0500, Michael A. Puls II 
> <shadow2531 at gmail.com> wrote:
> 
>> On Mon, 28 Dec 2009 12:08:48 -0500, Boris Zbarsky <bzbarsky at mit.edu> 
>> wrote:
>>
>>> On 12/28/09 9:54 AM, Michael A. Puls II wrote:
>>>> As for window.print(), what if it returns false if printing is not
>>>> supported?
>>>
>>> It might be better as |true| (crappy API issues aside), because 
>>> otherwise if a page writes |if (window.print())| it'll get false in 
>>> all existing browsers, no?
>>
>> Ah, I see. Good point.
> 
> Since making print() return something isn't going to help with older UAs 
> and returning true would feel backwards, instead of:
> 
> if (window.print()) {
>     alert("Printing is not supported");
> }
> 
> , we could do this:
> 
> if (typeof navigator.printingEnabled === "function" && 
> !navigator.printingEnabled()) {
>     alert("Printing is not supported");
> } else {
>     window.print();
> }
> 
> It's more verbose though and I'm not sure any will like it. But, tossing 
> it out there.
> 

What about:

if (!window.print) {
     alert("Printing is not supported"); [1]
} else {
     window.print();
}

This is possible if - one of Ollis initial proposals - browsers which 
don't support window.print() do not have the print method at all. That 
is backwards compatible, as legacy Handheld, TV and whatever UAs, that 
may have a however-working print method, just behave the same way they 
always did.

[1] I'd actually prefer something like:
body.onload = function() {
     if (window.print) {
         // Code that creates the print button
         // and adds it to the appropriate parent element
     }
}
Received on Monday, 28 December 2009 13:14:40 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:08:54 UTC