Newsgroup: it.comp.lang.javascript
Titolo: Stampare solo un div

come posso fare a stampare all'interno di una pagina PhpNuke solo un 
DIV?

 DIV?
Devi usare i CSS, in modo che puoi decidere in fase di stampa cosa deve
essere visibile oppure no.
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."

 DIV?
Ciao ti rispondio per mail, sperando che ti possa ancora essere
utile...
volevo chiarirti un tantino meglio come usare i css per stampare:
devi includere un ulteriore css supplementare con la cluasola
media="print"
<link rel="stylesheet" type="text/css" media="print" href="print.css"
/>
qui potrai scrivere qualcosa del genere:
body { display: none; }
#ID_TUO_DIV { display: block;   }
Spero di esserti stato di aiuto!

 #ID_TUO_DIV { display: block;   }
Mhm, a cazzotto direi che cosě non stamperŕ nulla, in quanto "id_tuo_div" č
cmq figlio di body (diretto o indiretto).
Per avere il risultato che volevi ottenere, ammesso e concesso che
"id_tuo_div" sia figlio di body (e non "nipote"):
	body * { display : none; }
	#id-tuo-div { display : block; }
Se invece di essere figlio č un "nipote", ovviamente, va reso visibile anche
l'elemento che lo contiene (e cosě, risalendo "l'albero genealogico" fino al
body).
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 cmq figlio di body (diretto o indiretto).
Certo, è figlio di body ma il selettore di id (#ID_TUO_DIV) è più specifico 
del selettore di tag (body) e quindi "vince".
Nello. 

 del selettore di tag (body) e quindi "vince".
Ti sfugge il fatto che se il contenitore è nascosto, allora lo è tutto il
suo contenuto.


 
in pratica l'ho provato:
http://interno.altervista.org/modules.php?name=Banche
ma la stampa è bianca.
sbaglio qualcosa? come idea sarebbe adatta perché non avendo un 
agevole controllo su tutte gli include del CMS mi verrebbe comodo 
rendere invisibile tutto e fare stampare solo un blocco; altrimenti 
dovrei modificare tutti gli include in funzione di una stampa e non è 
cosa elegante.
-- 
http://midiquiz.altervista.org
http://interno.altervista.org


Sottolineo soprattutto:
"Se invece di essere figlio è un "nipote", ovviamente, va reso visibile
anche l'elemento che lo contiene (e così, risalendo "l'albero genealogico"
fino al body)."
-- 


 
Non ci arrivo, come dovrei impostare la pagina se posso visto gli 
include del CMS?


 Non ci arrivo, 
Nella pratica:
<body>
	<div id="co">
		<h1>Sezione</h1>
		<p>
			<span>bla bla bla</span>
			<span id="myspan"> and bla.</span>
		</p>
	</div>
</body>
Se per assurdo tu volessi stampare solo lo span, non potresti fare:
	body{display:none}
	#myspan{display:inline} 
Perché così nasconderesti il contenitore in cui risiede "myspan" e di
conseguenza anche myspan non verrebbe visualizzato, a prescindere dal suo
"display".
E non potresti neppure fare:
	body * {display:none}
	#myspan{display:inline}
perché "myspan" non è figlio di body. Questo funzionerebbe solo se myspan
fosse allo stesso livello di "container".
Quindi devi applicare la stessa logica per ogni livello "padre figlio", fino
a raggiungere il nodo interessato. Ovvero, in quel caso:
	body *{display:none} 			/* nascondo tutti i figli di body */
	#co{display:block}  			/* tranne "co" */
	#co * {display:none} 			/* nascondo tutti i figli di "co" */
	#co p {display:block} 			/* tranne p */
	#co p * {display:none} 			/* nascondo tutti i figli di p */
	#myspan{display:inline!important} 	/* tranne "myspan" */
Questo è quello che puoi fare nei browser odierni in modo crossbrowser
tramite puro CSS.
Alternativamente, se non puoi risalire la gerarchia di ciò che devi o meno
stampare, puoi optare per javascript. Il problema di usare js per la stampa,
è che avvenire tramite un pulsante apposito, e non tramite lo "stampa" del
browser (su IE ci sono degli eventi che potrebbero aiutare in questo, ma
sono del tutto proprietari), inoltre ci sono diverse contro indicazioni. Si
tratterebbe di usare un iframe nascosto, oppure se sei sicuro che il blocco
che vai a stampare non contiene "ID" e similia negli elementi, potresti
optare per un "div" nascosto, che verrà visualizzato in fase di stampa
(quindi una tecnica mista rispetto a prima: la differenza è che il div in
questione è sempre figlio di body, quindi il codice CSS non deve tener conto
della gerarchia degli elementi).


Grazie x la risposta articolata, ora capisco meglio il problema e mi 
sa che piuttosto che inoltrarmi nel labirinto dei nodi, tra l'altro 
generati in gran parte dal CMS, sia preferibile mandare la stampa su 
un frame.


ma ripensandoci, non si potrebbe una routine JS che si incaricasse di 
trovare tutti i nodi fino al DIV interessato e impostare gli style di 
conseguenza?
