Il Web publishing in generale e la realizzazione di pagine Web in particolare non è certamente una scienza empirica. Chi si è cimentato nella costruzione di un sito Web avrà notato quali e quante siano le differenze tra i diversi browser, sistemi operativi e risoluzione video che generano una visualizzazione differente da utente ad utente. Una pagina perfettamente funzionante su MsIe 4 per sistemi Windows potrà essere leggeremente differente su Netscape sulla stessa piattaforma, ma addirittura stravolta su un sistema Mac.
A questi problemi gli sviluppatori tentano di porre rimedio con espedienti più o meno efficaci.
Se la visualizzazione su schermo soffre di questi problemi, la stampa di documenti non ne è certamente estranea.
Tutti i browser, fin dalle primissime versioni, prevedono l'opzione di stampa dei documenti. L'avvento dei frame ha complicato la situazione, ma le versioni 4 dei due browser principali hanno permesso di stampare tutti i frameset di una pagina o uno soltanto. La stampa di ipertesti, quindi, non è una novità nel panorama del Web publishing, ma lo è se il bottone di stampa è inserito all'interno di un documento HTML.
L'esempio di questa settimana permette di stampare un documento premendo un link testuale o d'immagine, senza la necessità del bottone del browser. In alcuni browser potrà apparire anche una finestra di dialogo che avverte l'utente dell'esecuzione di un azione sconosciuta, tuttavia la procedura è controllata e non dannosa.
L'esempio si compone di 2 file:
- esempio.htm
- stampa.gif
Per una più semplice comprensione del presente script fai continuamente riferimento al file sopracitato, verificando le procedure e i dati espressi. Solo in questo modo, con un continuo confronto, comprenderai le peculiarità di questo Javascript.
Questo file simula una normale pagina HTML, che esigenze nostre o del nostro committente vogliono rendere stampabile da un'immagine inserita nel documento.
Il codice Javascript non è particolarmente lungo o complicato, e va inserito integralmente all'interno del campo <body>, nella posizione relativa del documento nella quale si vuole venga visualizzato.
Una prima porzione di codice imposta la funzione printit:
<script type="text/javascript" language="javascript">
function printit(){
if (NS) {
window.print() ;
} else {
var WebBrowser = '<OBJECT ID="WebBrowser1" width=0 height=0
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(6, 2);
WebBrowser1.outerHTML = "";
}
}
</script>
La seconda parte di codice rende compatibile lo script con Netscape e attraverso il gestore di eventi "onClick" associa la funzione printit al link:
<script type="text/javascript" language="javascript">
var NS = (navigator.appName == "Netscape");
var VERSION = parseInt(navigator.appVersion);
if (VERSION> 3) {
document.write('<a href="#" onClick="printit()"><img src="stampa.gif"
alt="Clicca qui per stampare questa pagina" border="0"/></a>');
}
</script>
Il link a sua volta è rappresentato dall'immagine stampa.gif, che se cliccata apre la finestra di dialogo della tua stampante.
Rimane un problema irrisolto riguardo la stampa di pagine Web. Spesso le pagine Internet sono aperte e chiuse da banner pubblicatari e accompagnate da logo laterali. Questo, in caso di stampa, causa uno spreco non indifferente di colore per le nostre stampanti, e in molti casi scoraggia da una stampa diretta della pagina.
Esiste un metodo per evitare questo inutile dispendio di colore e denaro; nel prossimo numero mostreremo quale.