Newsgroup: it.comp.lang.javascript
Titolo: Stampare parte di un documento

Ciao a tutti, spero qualcuno mi voglia aiutare.
Ho 1 frame centrale con scroll bar, in questo frame sono presenti vari
documenti separati da un <hr>,
è possibile fare in modo che il visitatore stampi, con 1 click, solo il
contenuto del documento racchiuso tra un <hr> e l'altro?
Have a nice day   |:o)
Alpo.

 wrote in message
news:Bztx4.11153$i%1.12...@news.infostrada.it...

Ciao Alpo.
La questione è piuttosto semplice con IE: si assegna un DIV a ciascuna parte
da stampare separatamente, all'evento onClick sul DIV che interessa, si fa
corrispondere uno script che ne legge il contenuto, lo scrive sul nuovo
documento, stampa il nuovo documento e torna indietro di una pagina
dell'history (attenzione a quest'ultimo punto per pagine con frames dato che
il processo descritto deve essere eseguito su di un unica sotto-finestra).
Sto cercando di imparare qualche tecnica di cross-browsing, ma mi risulta
ancora piuttosto difficile far funzionare gli stessi ragionamenti su
Netscape.
Ho cercato workarounds per un paio di giorni, ma, purtroppo, non riesco a
trovare un equivalente della proprietà innerHTML.
Cioè, con questo browser il mio script NON funziona.
Se qualcuno potesse spiegarmi dove e perchè, credo, farebbe un favore ad
entrambi.
Ciao
    Luca
<HTML>
<HEAD>
<TITLE>Stampare parte di un documento</TITLE>
<META NAME="GENERATOR" CONTENT="Arachnophilia 3.9">
<META NAME="FORMATTER" CONTENT="Arachnophilia 3.9">
<SCRIPT LANGUAGE="JavaScript1.2">
<!-- ;
function stampa(cosa) {
var nome = 
cosa.id
;
 if (document.all) {
  alfa = "document.all[\"" + nome + "\"].innerHTML";
  beta = eval(alfa);
  document.write(beta);
  print();
 } else if(document.layers) {
  var alfa = document.layers[nome];
  document.open();
  document.write("" + alfa.document.toString())
  print();
  document.close()
 }
  history.back();
}
//  end hide -->
</SCRIPT></HEAD>
<BODY BACKGROUND="" BGCOLOR="#ff8080" TEXT="#004080" LINK="#0000ff"
VLINK="#0000ff" ALINK="#0000ff">
<DIV ID='div1' onclick='stampa(this)'>
 <LAYER ID='div1n' STYLE="position: absolute; top:0; width: 150; heigth:
100; background-color: #aaaaff" onmouseover='stampa(this)'>
  testo1<BR>
  <HR ALIGN=CENTER>
 </LAYER>
</DIV><BR>
<DIV ID='div2' onclick='stampa(this)'>
 <LAYER ID='div2n' STYLE="position: absolute; top:100; width: 150; heigth:
100; background-color: #aaaaff"  onmouseover='stampa(this)'>
  testo2
  <HR ALIGN=CENTER>
 </LAYER>
</DIV><BR>
<DIV ID='div3' onclick='stampa(this)'>
 <LAYER ID='div3n' STYLE="position: absolute; top:200; width: 150; heigth:
100; background-color: #aaaaff"  onmouseover='stampa(this)'>
  testo3
  <HR ALIGN=CENTER>
 </LAYER>
</DIV><BR>
</BODY>
</HTML>

Puoi fare in questo modo:
1) crei un nuovo file html con all'interno la parte che ti interessa
stampare
2) crei un bottone Stampa (o un link, è lo stesso) che apre una finestra
nuova che carica il file html creato nel punto 1
3) Nel tag <body> del file creato al punto uno inserisci: <body
onload="self.print();window.close()">
Funziona perfettamente con IE, un po' meno con NS 4.x, con NS5 non dovresti
avere problemi (credo!)
Ciao
Giuseppe Di Natale
gdin...@camomillaitalia.it
------------------------------------------
JS Labs - FAQ di it.comp.lang.javascript
http://jslabs.webhostme.com
FlyScript by JS Labs, JS in 3 click
http://jslabs.webhostme.com/servizi/flyscript/
------------------------------------------