Déterminez si le navigateur prend en charge l'impression

Je pense que la réponse à cela est presque certainement «non», parce que j'ai fait un peu de test et de recherche, mais y a-t-il un truc pour détecter si window.print() peut même fonctionner à partir d'une page (c'est-à-dire de JavaScript? )? Je sais que même sur un ordinateur de bureau / ordinateur portable, il ne sera jamais possible de savoir s'il existe une imprimante configurée sur le système, par exemple, mais au moins le navigateur affichera une boîte de dialogue d'impression.

Mon téléphone Android a une fonction window.print() , mais il (sans surprise) ne fait rien.

Encore une fois, je demande surtout, il y a une bonne question sur le sujet SO 🙂

Malheureusement, il ressemble à un non. La fonction window.print() ne fait pas partie de la spécification EMCAScript. Cela signifie qu'il n'y a aucune exigence pour qu'il fasse partie du langage JavaScript, et aucune documentation appropriée pour sa mise en œuvre. C'est un comportement indéfini et donc tester cela semble très difficile.

Sources:

MODIFIER:

Petit script mignon que j'ai écrit pour tester mes navigateurs, il suffit de vérifier la fonction d'impression et demande à imprimer:

 if(window.print) { if(confirm('I can print. Would you like to?')) window.print() } 

La méthode print() est synchrone. Cela permet de faire les résonances afin de décider si une boîte de dialogue d'impression a été affichée

 var start = +new Date(); window.print(); var delta = + new Date() - start; console.log(delta); if (delta > 100) { console.log('It worked'); } 

Les événements d'avant impression et d'impression peut aider, mais je ne suis pas sûr du support du navigateur.

Modifier: Webkit ne les prend pas en charge