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.

Imprimer une page

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.

Exemple

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é.

Le script

<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.

Courte explication

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.

Impression d'autres frames

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();

Cours JavaScript : Introduction Javascript Ajouter du Javascript Détection d'objet Déclarations Fontions String DOM Booléen DOM intermédiaire Objets This MouseOver Imprimer Détection navigateur