Attention cette page est ancienne
Vous êtes ici : Accueil des cours Misfu > Informatique > Apprendre la programmation > Cours Javascript > Imprimer une page en JavaScript
Traduction de la page 'Printing a page' (lien mort) rédigée par Peter-Paul Koch et traduite par Christophe Bruggeman
La traduction est en cours, si vous trouvez une erreur sur une page ou si vous souhaitez suggérer une amélioration, n'hésitez pas à utiliser le forum.
window.print() fonctionne dans Netscape 4 et 6, Explorer 5+ sur Windows, Opera 6, iCab, Ice Browser et Hotjava 3, WebTV ne fait pas grand-chose alors qu’il indique supporter cette méthode.
Le VBScript de cette page fonctionne dans Explorer 4, 5 et 6 sur Windows (cependant seul le 4 en a vraiment besoin).
Une fonctionnalité souvent demandée est le lien d'impression, avec lequel les utilisateurs peuvent imprimer une page. Ceci peut être très utile dans les sites usant des frames quand vous ne souhaitez pas expliquer à l'utilisateur qu'il doit cliquer sur la bonne frame, puis cliquer sur "print" etc...
Je ne suis pas encore satisfait de la manière dont le script à été réalisé. J'ai découvert de sérieux problèmes pour connecter le JavaScript et le VBScript utile pour Internet explorer 4. Je vais probablement le récrire plus tard.
Comme d'habitude, vous pouvez essayer le script. J'ai ajouté mon détecteur de navigateur ainsi vous saurez pour chaque impression quel navigateur vous avez utilisé.
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- var VBS = false; // --> </SCRIPT> <script language="VBScript"> sub window_onunload on error resume next set WB = nothing end sub function printIt ' on error resume next call WB.ExecWB(6,1) '6,2 gives no alert if err.number <> 0 then if DA then ' Internet Explorer 4 they probably cancelled alert "Nothing Printed :" & err.number & " : " & err.description else handle_error ' ie3x give alternate instructions end if end if end function document.write "<OBJECT ID=""WB"" WIDTH=0 HEIGHT=0 CLASSID=""CLSID:8856F961-340A-11D0-A96B-00C04FD705A2""> </OBJECT>" VBS = true </script> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- /* The actual print function */ function prePrint() { if (window.print) window.print(); else if (VBS) printIt(); else alert('This script does not work in your browser'); } // --> </SCRIPT>
En cliquant sur le lien impression, vous appelez la fonction prePrint() qui découvre pour vous si le navigateur permet d’imprimer et, si oui, si ça doit être faite par JavaScript ou par VBScript.
Puisque je vais réécrire ce script plus tard, je garderai une courte explication.
Dans le JavaScript la manière théorique d'imprimer une frame ou fenêtre est
window.print()
Ceci fonctionne dans Netscape 4 et plus, iCab, Hotjava et Windows explorer 5 et plus. Les autres navigateurs ne peuvent pas le supporter, excepté Internet Explorer 4 sur Windows (et, c’est une rumeur, Explorer 3). Ici nous utilisons du VBScript pour créer un objet qui contient un exemple du navigateur et lui donne ID="WB"
document.write "<object id=""wb"" width=0 height=0 classid=""clsid:8856f961-340a-11d0-a96b-00c04fd705a2""> </object>"
Puis nous appelons la fonction WB.ExecWB(6,1) qui signifie imprimer.
call WB.ExecWB(6,1)
Je ne suis toujours pas entièrement sûr de la manière dont il fonctionne, j'y reviendrai plus tard.
Pour imprimer d’autres frames dans Internet Explorer il est nécessaire de mettre d’abord le focus sur elles :
parent.framename.focus(); parent.framename.print();