Newsgroup: it.comp.lang.javascript
Titolo: body onload non funzionante in IE

Ho creato una pagina asp nella quale ho posto l'evento body onload = 
"document.Ins.CodBar.value=format('000000',document.Ins.CodBar.value);document.Ins.Cognome.focus()", 
il quale ovviamente richiama alla funzione:
<script type="text/javascript">
<!--
function format(mask,val){
return mask.substr(0,mask.length-val.length)+val;
}
//-->
Giungo alla domanda .... com'è che funziona sia in Opera che Firefox, ma 
non in IE (neanche il focus)? Suggerimenti?



io non vedo problemi in quello che hai scritto, sentiamo gli altri ma a
naso l'errore sta da altra parte.
Hai un esempio ripulito il più possibile che simuli questo errore?
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 
te lo posto subito:
<%Sub MostraPagina()%>
<html>
<head>
<!-- #include file = "Cal.inc" -->
</head>
<body 
onload="document.Ins.CodBar.value=format('000000',document.Ins.CodBar.value);document.Ins.Cognome.focus()">
<script type="text/javascript" src="cf.js"></script>
<script type="text/javascript">
<!--
function verifica(){
a=document.Ins.Cognome
....
t=document.Ins.CodBar
if (a.value == ""){
alert ('COGNOME obbligatorio')
a.focus();
return false
}
......
if (t.value == ""){
alert ('Inserire CODICE A BARRE')
t.focus();
return false
}
if (t.value.length != 6){
alert ('Il CODICE A BARRE deve essere di SEI cifre')
t.focus();
return false
}
}
//-->
</script>
<script type="text/javascript">
<!--
function format(mask,val){
return mask.substr(0,mask.length-val.length)+val;
}
//-->
</script>
<form name="Ins" method="post" action="scrivi_db.asp" onsubmit="return 
verifica()">
<div align="center">
<table border="1" width="100%" id="table1">
<tr valign="middle" height="50">
	<td align="center">		
	<p align="center"><font face="Verdana" size="2">Cognome</font></p>
	<p><font face="Verdana"><input type="text" name="Cognome" 
size="40"></font></p></td>
............
	<td align="center">
	<p align="center"><font face="Verdana" size="2">N° tessera</font></p>
<%sql = "SELECT Top 1 CodSocio FROM Usr_Anagrafica_full Where Codnetwork 
= "&Session("CodNetwork")&" ORDER BY CodSocio DESC"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
%>
	<p><font face="Verdana">
	<input type="text" name="CodBar" size="15" value="<%=rs(0)+1%>" 
style="text-align: center" readonly/></font></p></td>		
<%
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
%>
</tr></table>
<div align="center"><p>
	<input type="submit" value="Invia" name="B1" style="font-family: 
Verdana; font-size: 10pt">
	<input type="reset" value="Reimposta" name="B2" style="font-family: 
Verdana; font-size: 10pt"></p></div>
</form>
</body>
</html><% End Sub %><!-- #include file="Header.asp" -->
Spero di avere tagliato il più possibile, pur restando chiaro :)
Grazie intanto per la risposta celere, come puoi vedere ho bisogno che 
il CodBar sia di 6 cifre altrimenti scatta l'alert :(
Artemio

 te lo posto subito:
[CUT]
Scusami ma come faccio a prendere l'html risultante se è pieno di sub,
query e altre cose di asp (oltretutto vbs che non uso dai tempi del
Cudega)?
Posta una pagina *HTML* che simuli il problema (generala sul tuo client
aprendo la tua pagina e ripuliscila).
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 
Perdonami, pensavo potesse essere un errore di sub allora ti postai la 
pagina (il bello è che ci ho pure pensato :(). Ecco la sorgente:
<body 
onload="document.Ins.CodBar.value=format('000000',document.Ins.CodBar.value);document.Ins.Cognome.focus()">
<script type="text/javascript">
<!--
function verifica(){
a=document.Ins.Cognome
t=document.Ins.CodBar
if (a.value == ""){
alert ('COGNOME obbligatorio')
a.focus();
return false
}
if (t.value == ""){
alert ('Inserire CODICE A BARRE')
t.focus();
return false
}
if (t.value.length != 6){
alert ('Il CODICE A BARRE deve essere di SEI cifre')
t.focus();
return false
}
//-->
</script>
<script type="text/javascript">
<!--
function format(mask,val){
return mask.substr(0,mask.length-val.length)+val;
}
//-->
</script>
<form name="Ins" method="post" action="scrivi_db.asp" onsubmit="return 
verifica()">
<div align="center">
<table>
<tr><td align="center"><p align="center">Cognome</p>
<p<input type="text" name="Cognome" size="40"</p></td>
......
<td align="center"><p align="center">N° tessera</p>
<p><input type="text" name="CodBar" size="15" value="10791" 
readonly/></p></td></tr></table>
<div align="center"><p><input type="submit" value="Invia" name="B1">
<input type="reset" value="Reimposta" name="B2" ></p></div>
</form>
</body>
Scusa ancora. Artemio
PS. Come ripeto funziona sia su Firefox che Opera.

 <p<input type="text" name="Cognome" size="40"</p></td>
Questa è carina: c'è un tag p senza chiusura (<p anziché <p>) e idem per
l'input. Firefox lo rileva comunque, IE lo ignora (e, in questo caso, tendo
a dar ragione a IE).
Correggi mettendo le chiusure e andrà tutto.
<p><input type="text" name="Cognome" size="40"/></p></td>
-- 
"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.

 <p><input type="text" name="Cognome" size="40"/></p></td>
Purtroppo nella fretta del copia incolla, quello che manca in realtà 
c'è, sia la } che la chiusura <p> :(
Boh, penso che toglierò il controllo sulla lunghezza del campo e passerò 
i dati così
Grazie di tutto, se nel frattempo arrivano altre idee io le ascolterò 
più che volentieri.
Artemio

 c'è, sia la } che la chiusura <p> :(
Eppure, sistemate queste 2 cose, non segnala più errore onload:
 
http://www.criosoftware.it/bak/Gambetta.htm
(non ho fatto altri test, stai parlando di errori onload vero?)


 
Bellissima la pagina Gambetta, probabilmente mi da conflitto perchè il caricamento arriva da una
subroutine di asp (dove per altro c'è già un tag <body>). Mentre Firefox e Opera la digeriscono 
leggendo il secondo, IE no (prob legge il primo, anche se nel sorgente non sembrerebbe)
Ci smanettero un po', ma al max tolgo il controllo di lunghezza o passo ad un altro evento (onblur?).
Buona giornata
Artemio