Newsgroup: it.comp.lang.javascript
Titolo: stampa singolo articolo... dove sbaglio?

Ciao a tutti,
allora: ho una pagina index.php in cui ho inserito nell'head:
<script language="JavaScript">
function nascondi() {
   destr.style.display = "None";
   centr.style.display = "None";
   sinistr.style.display = "None";
}
function Stampa(parte){
nascondi()
parte.style.display = "";
window.print();
}
</script>
ho assegnato alla parte centrale l'id 'centr' ovvero
<td id='centr'> include etc.etc.</td>
ma anche se vi associo un <div> a parte non cambia niente
poi c'e' il link di stampa di tale cella
<a href="javascript:Stampa(centr)">Stampa articolo</a>
quando clicco sopra non stampa! :-(
IE mi dice 'errore nella visualizzazione della pagina' mentre Firefox resta 
totalmente indifferente e non stampa...
Sapete aiutarmi?
Grazie mille.
Bruco. 

 totalmente indifferente e non stampa...
firefox ti indicherà sicuramente l'errore nella console javascript (riga e
posizione nella riga, nonché spiegazione dell'errore) ... cosa dice?
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 posizione nella riga, nonché spiegazione dell'errore) ... cosa dice?
Ciao Cristiano e grazie mille per avermi risposto.
Il problema di mancata stampa era dovuto all'errore del None che mi hai 
fatto notare.
Il codice per fare prima l'ho copiato da un tutorial trovato con google... 
evidentemente era molto vecchio.
Adesso stampa ma non la singola cella, bensì tutta la pagina... :-(
Per fare prima ti riporto il codice della index.php che ne pensi?
E' abbastanza semplice e breve non ti spaventare.. :-)
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel=stylesheet href="page.css" type="text/css">
<script language="JavaScript">
function nascondi() {
   logo.style.dispaly = "none";
   destr.style.display = "none";
   centr.style.display = "none";
   sinistr.style.display = "none";
}
function Stampa(parte){
nascondi()
parte.style.display = "";
window.print();
}
</script>
</head>
<body>
<table width="800px" height="376" align="center" cellpadding="0" 
cellspacing="0" bgcolor="#ffffff">
<div id='logo'>
  <tr>
    <td height="100" colspan="3" valign="top" bgcolor="#ffffff" 
id='logocss'><img src="logosito.png"></td>
  </tr>
</div>
  <tr>
 <div id='sinistr'>
    <td width="160" valign="top" bgcolor="#ffffff id='leftcss'">
      <?php include('left.php');?>
    </td>
 </div>
 <div id='centr'>
    <td width="480" valign="top" bgcolor="#ffffff" id='bodycss'>
      <?php include('body.php');?>
    </td>
 </div>
 <div id='destr'>
    <td width="160" valign="top" bgcolor="#ffffff id='rightycss'">
      <?php include('right.php');?>
    </td>
 </div>
  </tr>
</table>
<a href="javascript:Stampa(centr)">Stampa articolo</a>
</body>
</html>
dove sbaglio?
Grazie ancora.
Bruco

 Adesso stampa ma non la singola cella, bensì tutta la pagina... :-(
e firefox anche? non dice nulla, come ti chiedevo, nella console
javascript? (mi suona strano che riesca a recuperare un riferimento
all'oggetto con quella sintassi)
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 all'oggetto con quella sintassi)
ecco l'errore che mi da firefox nella console:
Avviso: Elemento referenziato per ID/NAME a livello globale. Si dovrebbe 
invece utilizzare il document.getElementById(), standard W3C.
File sorgente: javascript:Stampa(centr)
Riga: 1
che ne pensi?
riciao e rigrazie 

 che ne pensi?
quello che ti ho scritto nel primo messaggio: devi referenziare l'oggetto
nel modo corretto.
Ma non sta qua l'errore (anche se va sicuramente corretto), e sinceramente
dal tuo codice non capisco bene cosa vuoi ottenere (hai una table, dentro
vari div [che ci fanno tra i tag table e tr???] ... "logo" si trova tra
table e tr, sinistr tra tr e td ...
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 table e tr, sinistr tra tr e td ...
questo è la struttura del sito
_____________________
|LOGO                              |
----------------------------
|        |                       |         |
|destr|      centr          |sinistr|
|        |                       |         |
|____|___________ |____ |
i div so che sintatticamente li ho messi male, ma avendo ogni <td> già un id 
associato ad un valore nel file css non sapevo se potevo condividere tale id 
anche per la funzione stampa, mi spiego?
Motivo per cui ne ho sovrapposto dei nuovi con il tag DIV.
Se elimino questo costrutto sbagliato e l'errore lo fa ancora dici che 
referenziando l'oggetto correttamente va?
Ho visto il link che mi hai indicato è un po' un casino per me applicarlo a 
quello che voglio fare.
Esistono altri link più specifici per il mio problema?
Non voglio infastidirti ma se non risolvo l'unica alternativa e aprire la 
popoup e stampare dall'interno di questa.
ciao.

Allora Cristiano, ho associato gli id ai td, ora funge.
Nel senso che vedo scomparire tutto intorno e mi rimane solo il corpo 
centrale e appare la finestra di stampa.
E' cosi' che dovrebbe funzionare?
Te lo chiedo perchè esteticamente non è bello vedere scomparire tutto il 
contorno di colpo.. credevo venisse fatto in background dal processo di 
stampa.
Se me lo confermi allora opto per la popup.
Ciao e ancora grazie.
Bruco. 

 stampa.
direi di sì ... ma non dovresti praticamente vederlo (logica: nascondi -
lanci il print - rivisualizzi).
Alternativa: onbeforeprint-onafterprint (se cerchi in google-gruppi
troverai un fantastiliardo di esempi ... il problema è che quando avevo
guardato non avevo trovato documentazione per Gecko, ma qualcuno in questo
newsgroup mi sembra mi abbia detto che funziona)
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 newsgroup mi sembra mi abbia detto che funziona)
cerco con google, se non mi piace il risultato pazienza e via con la popup.
Grazie di tutto Cristiano e scusa per il tempo che ti ho fatto perdere, 
spero il post sia utile ad altri.
ciao. ; )
Bruco. 

 centrale e appare la finestra di stampa.
Premetto che non ho seguito tutto il thread, ma... usare i CSS per la
stampa?
media print per intenderci.
-- 
~ Se cerchi una mano disposta ad aiutarti,
la trovi alla fine del tuo braccio.

 media print per intenderci.
funziona con IE>=5.0 ? ricordavo di no...
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 funziona con IE>=5.0 ? ricordavo di no...
Può darsi che la rule @media non funzioni su IE5.0, ma l'attributo "media"
dovrebbe essere supportato tranquillamente.
E comunque, sinceramente, dato che siamo nel 2006 e sta uscendo IE7, se
alcune features di contorno non sono "godibili" con un browser uscito..
quanto? Un lustro fa?..direi che possiamo anche dormire sonni tranquilli.
-- 
~ Always remember you're unique, just like everyone else.

 quanto? Un lustro fa?..direi che possiamo anche dormire sonni tranquilli.
concordo con te ... ma se funziona onbeforeprint/onafter sui browser Gecko,
e se questo evento funziona con IE>=5, forse è meglio ... no?


 e se questo evento funziona con IE>=5, forse è meglio ... no?
Dal mio punto di vista, no. Laddove ci sono standard sufficientemente
supportati che funzionano bene, e sono stati realizzati appositamente, non
vedo perché usare soluzioni proprietarie, che tra l'altro non funzionano
altrettanto bene.
Inoltre, anche se suonerà strano detto in un newsgroup di javascript, se
qualcosa può essere fatta tramite CSS anziché javascript, è bene utilizzare
il primo piuttosto che l'ultimo.
-- 
~ Il lavoro è quel lasso di tempo che intercorre tra una pausa caffè
 e l'altra.