2014-10-31 3 views
6

Auf Android-Geräten (ich habe Nexus 5, Nexus 10, Galaxy S4 und Galaxy Tab 3 getestet), tut der window.print() Befehl in JavaScript nichts. Soweit ich das beurteilen kann, registriert es nicht einmal einen Fehler.Verwendung von window.print() oder alternativ auf Android-Geräten

Ich weiß, dass die meisten, wenn nicht alle diese Browser drucken können, weil Sie das Menü von Chrome mobil verwenden können, um "Drucken" zu wählen.

Warum löst window.print() nicht das Verhalten aus, das Sie erwarten würden (Öffnen des Druckermenüs des Clients)? Und gibt es eine Android-Alternative zu window.print()?

+0

Sie benötigen eine App von einem Android zu drucken: https://play.google.com/store/apps/details?id=com.google.android.apps.cloudprint&hl=en –

Antwort

0

Ich denke, Direct Print() -Methode ist standardmäßig auf Geräten deaktiviert. Ich habe nicht so viele Telefone oder andere Android-Geräte mit Drucker gesehen, aber per USB sollte es natürlich möglich sein.

Stattdessen wird empfohlen, Inhalt/Seite als PDF zu speichern und über einen Cloud-Druckdienst zu drucken.

+1

Wie ich schon sagte, Chrome für Android hat eine "print" -Option in seinem Menü. Dies muss irgendwie von Javascript zugänglich sein und wie für die Konvertierung in PDF könnten Sie das näher erläutern. – MarshallOfSound

+0

Das stimmt. Aber diese Option ist mehr für den Cloud-Druck oder "Drucken in Datei" wie ein PDF oder EPS, wo "direkter" Druck deaktiviert werden kann. Hier fand ich die Antwort http://stackoverflow.com/questions/9268840/determine-whether-browser-supports-printing, kann viele Gründe, warum es nicht funktioniert in den meisten Browsern auf mobilen Geräten, aber in der Tat ist es einfach nicht implementiert oder deaktiviert. Stattdessen können Sie immer noch mit Freigabeoptionen drucken oder als pdf usw. – Dudeist

3

Es ist eindeutig in diesen Documentation erklärt: "Der Befehl auf iOS, Chrome auf Windows und Safari und Chrome auf dem Mac unterstützt wird. Es wird nicht auf Android unterstützt."

Android-Handys haben nicht native Unterstützung für das Drucken noch, so window.print() wird nicht funktionieren. Das bedeutet, dass Sie zum Drucken die Anwendung eines Drittanbieters verwenden müssen. Sie können einige Alternativen in diesem article finden.

+0

Yea ich installierte Google Cloud Print App, wenn ich auf die Google Cloud Print-Taste klicke, öffnet sich das Dialogfeld und ich Drucker wählen, dann klicken Sie auf Drucken nichts passieren. Was soll ich jetzt tun? – Karthi

2

Verwenden Sie Google Cloud Print (GCP) - es ist keine App erforderlich. Der Benutzer muss jedoch über GCP einen Drucker eingerichtet haben.

Dieses Beispiel verwendet GCP gadget

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Print</title> 
    </head> 
    <body> 
     <div> 
      <p>On android devices (I have tested Nexus 5, Nexus 10, Galaxy S4 and Galaxy Tab 3) the window.print() command in javascript doesn't do anything, as far as I can tell it doesn't even register an error.</p> 
      <p>I know for a fact that most if not all of these browsers can print because you can use mobile chromes menu to choose "print". My questions is, why doesn't window.print() trigger the behavior you would expect (opening the clients print menu). 
      And is there an android alternative to window.print()?</p> 
     </div> 

     <div id="gcpPrint"></div> 

     <script src="https://www.google.com/cloudprint/client/cpgadget.js"> 
     </script> 

     <script> 
      var gadget = new cloudprint.Gadget(); 
      gadget.setPrintButton(cloudprint.Gadget.createDefaultPrintButton("gcpPrint")); 
      gadget.setPrintDocument("text/html", "Print", document.documentElement.innerHTML); 
     </script> 
    </body> 
</html> 
+0

ja, ich habe Google Cloud Print App installiert, wenn ich auf den Google Cloud Print-Button klicke, öffnet sich das Dialogfeld und ich wähle Drucker und klicke dann auf Drucken nichts passiert. Was soll ich jetzt tun? – Karthi

2

Ich bin auf einem simular Problem zu arbeiten und kam mit dieser Lösung:

$(document).ready(function($) { 
 
    var ua = navigator.userAgent.toLowerCase(); 
 
    var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 
 

 
    $('button.print').click(function(e) { 
 
    e.preventDefault(); 
 
    if (isAndroid) { 
 
     // https://developers.google.com/cloud-print/docs/gadget 
 
     var gadget = new cloudprint.Gadget(); 
 
     gadget.setPrintDocument("url", $('title').html(), window.location.href, "utf-8"); 
 
     gadget.openPrintDialog(); 
 
    } else { 
 
     window.print(); 
 
    } 
 
    return false; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button class="print">Print this page</button>

Ich habe nicht die Zeit gehabt um zu überprüfen, ob das funktioniert, habe ich momentan kein android-gerät bei mir. Ich würde gerne ein Feedback dazu haben ;-)

+0

Dies ist eine nette Lösung, eigentlich mehr oder weniger, was ich am Ende ging, aber mein Hauptanliegen war, dass ich das Äquivalent von Datei -> Drucken auf meinem Android-Gerät (Menü-Taste -> Drucken) tun kann, aber ich kann nicht Trigger dies mit dem Semi Standard 'window.print()' Funktion – MarshallOfSound

+0

Ich konnte den Befehl Drucken auf Chrome Android nicht finden. Ich kann teilen ... finden> Drucker. – Dave

+0

Ich konnte die 'mobile' Zeichenfolge in keiner User-Agent-Zeichenfolge finden. Auch das Problem ist, dass manchmal der Webbrowser auf dem mobilen elektronischen Gerät den Desktop-Modus emulieren kann, so dass die "android" Zeichenfolge nicht angezeigt wird. Ich konnte nicht mit dem _Google Chrome_ Webbrowser testen, weil es nicht richtig zu funktionieren scheint. Die 'android'-Zeichenfolge wurde auf dem mobilen elektronischen Gerät angezeigt, während der _Firefox_ Webbrowser und der _web Browser_ Webbrowser von _Litter Penguin_ verwendet wurden. –

0

In diesem Moment funktioniert die window.print() -Funktion perfekt auf meinem Android 5.0.1-Gerät sowohl mit Chrome als auch dem Standard-Browser.

+1

Ich versuchte mit andriod 7. window.print() tut nichts. still ignoriert. – Dave

0

Nun arbeitet window.print() auf Android-Geräten.

Verwandte Themen