2014-10-31 14 views
6

Sui dispositivi Android (ho testato Nexus 5, Nexus 10, Galaxy S4 e Galaxy Tab 3), il comando window.print() in JavaScript non esegue nulla. Per quanto posso dire, non registra nemmeno un errore.Utilizzo di window.print() o alternativa su dispositivi Android

So per certo che la maggior parte se non tutti questi browser possono stampare perché è possibile utilizzare il menu di Chrome per dispositivi mobili per scegliere "stampa".

Perché lo window.print() non attiva il comportamento previsto (apertura del menu di stampa dei client)? E c'è un'alternativa Android a window.print()?

+0

Hai bisogno di un'app per stampare da un androide: https://play.google.com/store/apps/details?id=com.google.android.apps.cloudprint&hl=en –

risposta

0

Penso che il metodo print() diretto sia disabilitato sui dispositivi per impostazione predefinita. Non ho visto così tanti telefoni o altri dispositivi Android con la stampante, tuttavia tramite USB dovrebbe essere ovviamente possibile.

Invece, si consiglia di salvare il contenuto/pagina in formato PDF e stamparlo tramite un servizio di stampa cloud.

+1

Come ho detto, chrome per Android ha un'opzione "stampa" nel suo menu. Questo deve essere in qualche modo accessibile da javascript e come per la conversione in PDF è possibile elaborare su questo. – MarshallOfSound

+0

È vero. Ma questa opzione è più utile per la stampa cloud o "stampa su file" come un pdf o eps dove la stampa "diretta" può essere disabilitata. Qui ho trovato la risposta http://stackoverflow.com/questions/9268840/determine-whether-browser-supports-printing, possono esserci molte ragioni per cui non funziona nella maggior parte dei browser sui dispositivi mobili, ma in realtà, non è solo implementato o disabilitato. Invece puoi ancora stampare con opzioni di condivisione o salvare come pdf ecc. – Dudeist

3

E 'chiaramente indicato in questo Documentation, "Il comando è supportato su iOS, Chrome su Windows e Safari e Chrome su Mac. Non è supportato su Android."

telefoni Android non hanno supporto nativo per la stampa ancora, quindi window.print() non funzionerà. Ciò significa che è necessario utilizzare l'app di terze parti per eseguire la stampa. Potresti trovare alcune alternative in questo article.

+0

sì ho installato l'app google cloud print, quando faccio clic sul pulsante di google cloud print, la finestra di dialogo si aprirà e selezionerò la stampante quindi clic sulla stampa non accadrà nulla. ora cosa dovrei fare? – Karthi

2

Utilizzare Google Cloud Print (GCP) - non è richiesta alcuna app. Tuttavia, l'utente deve aver configurato una stampante tramite GCP.

Questo esempio utilizza 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

yea ho installato l'app google cloud print, quando faccio clic sul pulsante di google cloud print, la finestra di dialogo si aprirà e selezionerò la stampante, quindi clic sulla stampa non accadrà nulla. ora cosa dovrei fare? – Karthi

2

Sto lavorando su un problema simular e si avvicinò con questa soluzione:

$(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>

non ho avuto il tempo per verificare se funziona, non ho un dispositivo Android con me al momento. Mi piacerebbe avere qualche feedback su questo ;-)

+0

Questa è una bella soluzione, in realtà più o meno quello che sono andato con, alla fine, ma la mia preoccupazione principale era che posso fare l'equivoco di File -> Stampa sul mio dispositivo Android (pulsante Menu -> Stampa) ma non posso attivarlo con la funzione semi standard 'window.print()' – MarshallOfSound

+0

Non sono riuscito a trovare il comando Stampa su Android di Chrome. Posso trovare la condivisione ...> Stampante. – Dave

+0

Fino ad ora non sono stato in grado di trovare la stringa di caratteri 'mobile' in nessuna stringa di caratteri di user agent. Inoltre, il problema è che a volte il browser Web sul dispositivo elettronico mobile può emulare la modalità desktop, quindi la stringa di caratteri 'android' non viene visualizzata. Impossibile testare con il browser web _Google Chrome_ perché non sembra funzionare correttamente. La stringa di caratteri 'android' è stata visualizzata sul dispositivo elettronico mobile mentre si utilizzava il browser _Firefox_ e il browser web _web Browser_ realizzato da _Litter Penguin_. –

0

In questo momento, la funzionalità window.print() funziona perfettamente sul mio dispositivo Android 5.0.1 con entrambi, Chrome e il browser predefinito.

+1

Ho provato con andriod 7. window.print() non fa nulla. silenziosamente ignorato. – Dave

0

Ora, window.print() funziona su dispositivi Android.

Problemi correlati