web-dev-qa-db-de.com

Verwenden von window.print () oder alternativ auf Android-Geräten

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

Ich weiß ganz genau, dass die meisten, wenn nicht alle Browser drucken können, da Sie das mobile Chrome-Menü verwenden können, um "Drucken" auszuwählen.

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

8
MarshallOfSound

In dieser Dokumentation , " ist der Befehl eindeutig angegeben. Der Befehl wird unter iOS, Chrome unter Windows und Safari und Chrome unter Mac unterstützt. Er wird unter Android nicht unterstützt. "

Android-Telefone haben noch keine native Druckunterstützung, daher funktioniert window.print() nicht. Dies bedeutet, dass Sie eine Drittanbieter-App zum Drucken verwenden müssen. In diesem Artikel finden Sie einige Alternativen.

5
Harry

Ich arbeite an einem ähnlichen Problem und kam zu 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 hatte keine Zeit zu überprüfen, ob dies funktioniert. Ich habe im Moment kein Android-Gerät bei mir. Ich hätte gerne ein Feedback dazu ;-)

3

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

In diesem Beispiel wird GCP-Gadget verwendet.

<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>
3
Avner

Ich denke, die Direktdruckmethode () ist auf Geräten standardmäßig 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, den Inhalt/die Seite als PDF zu speichern und über einen Cloud-Druckdienst zu drucken.

0
Dudeist

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

0
Pravin

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

0
Memet Olsen