Newsgroup: it.comp.lang.javascript
Titolo: Aiuto per Stampare...

Il metodo window.print non è supportato da ie 4. Usando lo script
gentilmente
fornito da non mi ricordo più chi che usa Vbasic e manipolandolo
leggermente,va bene ma con IE4 stampa solo la
pagina che contiene il bottone che lo chiama. Lo script è il seguente: tutto
parte con la funzione stampa():
<SCRIPT Language="Javascript">
function
tit(){  
  if (window.print) {
 
parent.main.focus();
parent.main.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);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";  
}
}
function stampa() {
var VERSION = parseInt(navigator.appVersion);   
if (VERSION > 3)
printit();
else
alert("Il tuo Browser non stampa!!");        
}
</script>
Sapreste modificarlo in modo che stampi in un frame che stà sotto al frame che contiene il bottone che invoca stampa() e che si chiama "down"?? Vi ricordo che parent.nameframe.print() con IE4 non funzia!!

<script language="javascript">
function Print_Page(win) {
if(!win)win=window;
win.self.focus();
if (win.print)win.print();
else if(document.all){
printIE4 = function() {
execScript("on error resume next: printVb.ExecWB 6, 1", "VBScript");
printVb.outerHTML = "";
window.printHelper = null;
}
document.body.insertAdjacentHTML("beforeEnd",
"<object id=\"printVb\" width=0 height=0 \
classid=\"clsid:8856F961-340A-11D0-A96B-00C04FD705A2\"></object>");
setTimeout("window.printIE4()", 0);
}else
alert("il tuo browser non puo stampare");
}
</script>
un semplice script cross-browser per stampare: voto 1;
in Netscape dalla versione 4 ed in Internet Explorer
dalla versione 5 la funzione print() entra a far parte
del codice nativo e permette con una semplice chiamata
window.print(); la stampa del document..
per le versioni precedente di Internet Explorer questo
era possibile solo con l'uso di un controllo ActiveX
ed esattamente il WebBrowser control
(dalla classid=8856F961-340A-11D0-A96B-00C04FD705A2)
controllo implementato dalla versione 3 del browser
di casa microsost, nell'esempio sopra riportato.
Ho escluso per motivi di semplicita IE3 anche se
con l'uso del sopracitato controllo e possibile
utilizzare la funzione di stampa comandata da script.
entriamo nello specifico della funzione:
alla funzione Print_Page(); si puo' passare una qlq. pagina
da stampare [es:Print_Page(parent.frames[0])], e questo puo
essere utile non solo per decidere quale frame stampare,
ma anche ad es per decidere di stampare una immagine o
una pagina non visibile ed inserita in un frame nascosto,
si puo anche non passare nessun oggetto di pagina ed
in questo caso si stampa la pagina contenente lo script..
il funzionamento e semplice una volta decisa quale pagina
stampare , questa viene attivata con il [focus()], quindi
se i browser sia Netscape che Explorer sono in grado di
interpretare il comando print() nativo, parte la stampa,
mentre nel caso in cui ci sia IE4 senza service pack,
viene inserito prima della fine del documento con
insertAdjacentHTML il controllo activeX WB e viene
richiamata la funzione per stampare in VisualBasic script
con il comando execScript..
--
Bye
        Ro<*¿*>berto