Newsgroup: it.comp.lang.javascript
Titolo: Form, Netscape e modifica testo

Ciao a tutti
Sono alle prese con un'altro problema di compatibilita' tra browser.
In una pagina (sotto c'e' l'esempio) ho una form di inserimento dati.
In mezzo ai vari campi c'e' anche del testo che voglio cambiare alla
pressione del pulsante "CAMBIA TESTO".
Ho utilizzato un if per distinguere i due diversi metodi usati da IE e
da NS per cambiare il testo.
IE usa innerText, mentre sotto NS bisogna creare un layer e utilizzare
document.write() su quel layer.
Fin qui tutto bene, infatti premendo il primo pulsante il testo viene
cambiato sia sotto IE che sotto NS.
Ma perche' sotto NS i campi della form che stanno dopo la
dichiarazione del layer, spariscono? :-(
Grazie
Maxi
ESEMPIO
---------------------------------------------------------
<html>
<head>
	<title>Untitled</title>
	<script language="JavaScript">
		ie = (document.all)?true:false;
 
		function cambia() {
			if (ie) {
				//Sono IE
				document.all.testo.innerText = 'Eccomi
sono il nuovo testo stampato da Internet Explorer'
			} else {
				//Sono NS
document.layers['testo'].document.open()
document.layers['testo'].document.write('Eccomi sono il nuovo testo
stampato da Netscape')
document.layers['testo'].document.close()
			}
		}
	</script>
</head>
<body>
<form action="" method="post" name="frm1">
<input type="button" value="CAMBIA TESTO" onClick="cambia()"><br>
<input type="text" name="text1" size="12" maxlength="12"><br>
<script language="JavaScript">
	if (document.all) {
		//Sono IE perciň uso <span>
		//alert('IE')
		document.write('<span name="testo" id="testo">')
	} else {
		//Sono NS percio' uso <layer>
		//alert('NS')
		document.write('<layer name="testo">')
	}
</script>
Testo da cambiare
<script language="JavaScript">
	if (document.all) {
		//Sono IE perciň uso <span>
		document.write('</span>')
	} else {
		//Sono NS percio' uso <layer>
		document.write('</layer>')
	}
</script>
<br>
<input type="text" name="text2" size="12" maxlength="12"><br>
<input type="button" value="CAMBIA TESTO" onClick="cambia()"><br>
<input type="submit">
</form>
</body>
</html>
Massimiliano Grassi - 
massimili...@dialogos3.com
--------------------------------------------------------
Dialogos 3 srl
http://www.dialogos3.com
Via Boscovich 14
20124 Milano

.. non ha importanza definire un layer, se usi span position:absolute da
netscape viene interpretato come layer...
inoltre, con document.write, tu cancelli tutto quello che si trova nel
document o nel layer oggetto del write, quindi compare solo tutto quello che
vi scrivi..
in netscape al caricamento della pagina si crea l'array layer,
tu puoi aggiungere un elemento all'array con new layer.. .....
mentre un document.write(layer... non sempre aggiunge
all'aray sopra citato...
io userei un span id= .. position:absolute sia per N che per IE
mettendolo nel body e non scrivendolo con un .write!!
--
Bye
Ro<*¿*>berto


wrote:

Ho fatto come dici tu mettendo 
<span id="testo" style="position:absolute;" name="testo">
</span>
al posto di tutto quel casino con javascript, pero' Netscape continua
a non farmi vedere il resto della form (1 entry field e 2 pulsanti)
che stanno immediatamente sotto alla definizione del layer (span).
Il testo lo cambia senza problemi.
Ciao
Maxi


.. metti gli script al di fuori del form
e controlla i tag html...
