UnknownSoldier
16-10-2008, 18:43
Salve a tutti. Ho notato una stranissima anomalia nel comportamento di IE 6 durante l'esecuzione di un mio script JavaScript. Mozilla Firefox riesce correttamente nell'esecuzione senza nessun messaggio di errore nella console. Con IE 6 invece, lo script si arresta e viene visualizzato il seguente messaggio: http://img50.imageshack.us/img50/6272/screen3qq7.png
Allora, ho fatto Visualizza - HTML, ho copiato il codice e l'ho incollato in Notepad++ e ho visto cosa c'è alla riga 40, c'è questo: nick = document.getElementById ("nick");
L'input text ha ovviamente dichiarato l'id "nick", e infatti Mozilla lo esegue correttamente. La cosa che mi fa imbestialire è: perchè IE 6 fa così? Eppure si tratta di una operazione elementare... vi prego aiutatemi :(
Questo è il codice completo (quello statico preso da IE), se può aiutarvi:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Dieffe web - Home</title>
<meta http-equiv="content-type" content="text/html;charset=windows-1252">
<link rel = "stylesheet" type = "text/css" href = "style.css">
</head>
<body>
<script type = "text/javascript" src = "../jslib.js"></script>
<script type = "text/javascript">
//<!--
function showLoginForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "visible";
logindiv = document.getElementById ("login");
logindiv.style.visibility = "visible";
}
function hideLoginForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "hidden";
logindiv = document.getElementById ("login");
logindiv.style.visibility = "hidden";
nick = document.getElementById ("nick");
password = document.getElementById ("password");
loginmessage = document.getElementById ("loginmessage");
nick.value = "";
password.value = "";
loginmessage.innerHTML = "";
}
function sendLoginForm()
{
nick = document.getElementById ("nick");
password = document.getElementById ("password");
loginmessage = document.getElementById ("loginmessage");
if (nick.value != "" && password.value != "")
{
request = createXMLHttpRequest
(
function()
{
if (request.readyState == 4 && request.status == 200)
{
response = request.responseText;
if (response == "success")
window.location.reload();
else
loginmessage.innerHTML = response;
}
}
);
request.open ("get", "../database/login.php?r=" + Math.random() * 10 + "&nick=" + nick.value + "&pwd=" + password.value + "&lang=it");
request.send (null);
}
else
loginmessage.innerHTML = "Empty fields";
}
function showSignupForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "visible";
signupdiv = document.getElementById ("signup");
signupdiv.style.visibility = "visible";
}
function hideSignupForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "hidden";
logindiv = document.getElementById ("signup");
logindiv.style.visibility = "hidden";
nickfield = document.getElementById ("nickfield");
emailfield = document.getElementById ("emailfield");
signupmessage = document.getElementById ("signupmessage");
nickfield.value = "";
emailfield.value = "";
signupmessage.innerHTML = "";
}
function sendSignupForm()
{
nickfield = document.getElementById ("nickfield");
radio1 = document.getElementById ("radio1");
radio2 = document.getElementById ("radio2");
emailfield = document.getElementById ("emailfield");
signupmessage = document.getElementById ("signupmessage");
var pemail;
if (radio1.checked)
pemail = "y";
else if (radio2.checked)
pemail = "n";
next = true;
if (nickfield.value == "")
{
signupmessage.innerHTML = "Nick field is empty";
next = false;
}
else if (emailfield.value == "")
{
signupmessage.innerHTML = "E-mail field is empty";
next = false;
}
if (next)
{
request = createXMLHttpRequest
(
function()
{
if (request.readyState == 4 && request.status == 200)
{
response = request.responseText;
if (response == "success")
location.href = "registration.php";
else
signupmessage.innerHTML = response;
}
}
);
request.open ("get", "../database/registration.php?r=" + Math.random() * 10 + "&nick=" + nickfield.value
+ "&email=" + emailfield.value + "&pemail=" + pemail + "&lang=it");
request.send (null);
}
}
//-->
</script>
<div id = "black">
</div>
<div id = "maindiv">
<div id = "login">
<p style = "text-align: right; margin: 3px;"><a href = "#" onClick = "hideLoginForm(); return false;"><img src = "images/x.png" alt = "Close" border = "0"></a></p>
<p style = "font-weight: bold; font-size: 15px;">Accedi</p>
<div style = "width: 220px; margin: auto;">
<table>
<tr>
<td>Nick:</td><td><input type = "text" id = "nick" maxlength = "20"></td>
</tr>
<tr>
<td>Password:</td><td><input type = "password" id = "password" maxlength = "25"></td>
</tr>
<tr>
<td></td><td><input type = "submit" value = "Accedi" onClick = "sendLoginForm(); return false;"></td>
</tr>
</table>
<div id = "loginmessage" style = "text-align: center; font-size: 10px; color: red;"></div>
</div>
</div>
<div id = "signup">
<p style = "text-align: right; margin: 3px;"><a href = "#" onClick = "hideSignupForm(); return false;"><img src = "images/x.png" alt = "Close" border = "0"></a></p>
<p style = "font-weight: bold; font-size: 15px;">Registrati</p>
<div style = "width: 240px; margin: auto;">
<table>
<tr>
<td>Nick:</td><td><input type = "text" id = "nickfield" maxlength = "20"></td>
</tr>
<tr>
<td>E-mail:</td><td><input type = "text" id = "emailfield" maxlength = "50"></td>
</tr>
<tr>
<td>E-mail privata:</td><td><input type = "radio" id = "radio1" name = "radio"><label for = "radio1">Yes</label><input type = "radio" id = "radio2" name = "radio" checked = "checked"><label for = "radio2">No</label></td>
</tr>
<tr>
<td></td><td><input type = "submit" value = "Registrati" onClick = "sendSignupForm(); return false;"></td>
</tr>
</table>
<div id = "signupmessage" style = "text-align: center; font-size: 10px; color: red;"></div>
</div>
</div>
<div style = "width: 600px; float: left; text-align: left; margin: 2px 10px 0px 6px;">
<a href = "#" onClick = "showLoginForm(); return false;">Accedi</a> <span style = "font-size: 14px;">|</span>
<a href = "#" onClick = "showSignupForm(); return false;">Registrati</a>
</div>
<div style = "width: 135px; float: left; text-align: right; margin: 5px 0px 0px 0px;">
<a href = "../en"><img src = "images/enflag.png" alt = "english" border = "0"></a>
<a href = "../it"><img src = "images/itflag.png" alt = "italiano" border = "0"></a>
</div>
<p style = "margin-top: 0px;"><img src = "images/dieffeweb.png" alt = "Dieffe web"></p>
<div id = "menudiv">
<div id = "menubuttons">
<div style = "width: 720px; margin-left: auto; margin-right: auto;"><a href = "index.php">Home</a><a href = "software.php">Software</a><a href = "jitchat.php">J-it Chat</a><a href = "websites.php">Siti web</a><a href = "contact.php">Contatti</a></div>
</div>
<div style = "clear:both;"></div>
</div>
</div>
<div id = "bodydiv">
<div id = "text">
<p style = "font-weight: bold; font-size: 15px;">Benvenuto su Dieffe web .com</p>
<div>
<script type="text/javascript"><!--
google_ad_client = "pub-7051746397843508";
/* 728x90, creato 01/05/08 */
google_ad_slot = "0681514957";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div style = "text-align: center; width: 520px; margin-right: auto; margin-left: auto;">
<a href = "jitchat.php"><img src = "images/downloadChat.png" alt = "Download chat" border = "0" style = "float:left;"></a>
<a href = "websites.php"><img src = "images/creationSites.png" alt = "Creation Sites" border = "0" style = "float:left; margin-left:6px;"></a>
<div style = "clear:both;"></div>
</div>
<div style = "clear:both;"></div>
</div>
</div>
</body>
</html>
Allora, ho fatto Visualizza - HTML, ho copiato il codice e l'ho incollato in Notepad++ e ho visto cosa c'è alla riga 40, c'è questo: nick = document.getElementById ("nick");
L'input text ha ovviamente dichiarato l'id "nick", e infatti Mozilla lo esegue correttamente. La cosa che mi fa imbestialire è: perchè IE 6 fa così? Eppure si tratta di una operazione elementare... vi prego aiutatemi :(
Questo è il codice completo (quello statico preso da IE), se può aiutarvi:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Dieffe web - Home</title>
<meta http-equiv="content-type" content="text/html;charset=windows-1252">
<link rel = "stylesheet" type = "text/css" href = "style.css">
</head>
<body>
<script type = "text/javascript" src = "../jslib.js"></script>
<script type = "text/javascript">
//<!--
function showLoginForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "visible";
logindiv = document.getElementById ("login");
logindiv.style.visibility = "visible";
}
function hideLoginForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "hidden";
logindiv = document.getElementById ("login");
logindiv.style.visibility = "hidden";
nick = document.getElementById ("nick");
password = document.getElementById ("password");
loginmessage = document.getElementById ("loginmessage");
nick.value = "";
password.value = "";
loginmessage.innerHTML = "";
}
function sendLoginForm()
{
nick = document.getElementById ("nick");
password = document.getElementById ("password");
loginmessage = document.getElementById ("loginmessage");
if (nick.value != "" && password.value != "")
{
request = createXMLHttpRequest
(
function()
{
if (request.readyState == 4 && request.status == 200)
{
response = request.responseText;
if (response == "success")
window.location.reload();
else
loginmessage.innerHTML = response;
}
}
);
request.open ("get", "../database/login.php?r=" + Math.random() * 10 + "&nick=" + nick.value + "&pwd=" + password.value + "&lang=it");
request.send (null);
}
else
loginmessage.innerHTML = "Empty fields";
}
function showSignupForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "visible";
signupdiv = document.getElementById ("signup");
signupdiv.style.visibility = "visible";
}
function hideSignupForm()
{
blackdiv = document.getElementById ("black");
blackdiv.style.visibility = "hidden";
logindiv = document.getElementById ("signup");
logindiv.style.visibility = "hidden";
nickfield = document.getElementById ("nickfield");
emailfield = document.getElementById ("emailfield");
signupmessage = document.getElementById ("signupmessage");
nickfield.value = "";
emailfield.value = "";
signupmessage.innerHTML = "";
}
function sendSignupForm()
{
nickfield = document.getElementById ("nickfield");
radio1 = document.getElementById ("radio1");
radio2 = document.getElementById ("radio2");
emailfield = document.getElementById ("emailfield");
signupmessage = document.getElementById ("signupmessage");
var pemail;
if (radio1.checked)
pemail = "y";
else if (radio2.checked)
pemail = "n";
next = true;
if (nickfield.value == "")
{
signupmessage.innerHTML = "Nick field is empty";
next = false;
}
else if (emailfield.value == "")
{
signupmessage.innerHTML = "E-mail field is empty";
next = false;
}
if (next)
{
request = createXMLHttpRequest
(
function()
{
if (request.readyState == 4 && request.status == 200)
{
response = request.responseText;
if (response == "success")
location.href = "registration.php";
else
signupmessage.innerHTML = response;
}
}
);
request.open ("get", "../database/registration.php?r=" + Math.random() * 10 + "&nick=" + nickfield.value
+ "&email=" + emailfield.value + "&pemail=" + pemail + "&lang=it");
request.send (null);
}
}
//-->
</script>
<div id = "black">
</div>
<div id = "maindiv">
<div id = "login">
<p style = "text-align: right; margin: 3px;"><a href = "#" onClick = "hideLoginForm(); return false;"><img src = "images/x.png" alt = "Close" border = "0"></a></p>
<p style = "font-weight: bold; font-size: 15px;">Accedi</p>
<div style = "width: 220px; margin: auto;">
<table>
<tr>
<td>Nick:</td><td><input type = "text" id = "nick" maxlength = "20"></td>
</tr>
<tr>
<td>Password:</td><td><input type = "password" id = "password" maxlength = "25"></td>
</tr>
<tr>
<td></td><td><input type = "submit" value = "Accedi" onClick = "sendLoginForm(); return false;"></td>
</tr>
</table>
<div id = "loginmessage" style = "text-align: center; font-size: 10px; color: red;"></div>
</div>
</div>
<div id = "signup">
<p style = "text-align: right; margin: 3px;"><a href = "#" onClick = "hideSignupForm(); return false;"><img src = "images/x.png" alt = "Close" border = "0"></a></p>
<p style = "font-weight: bold; font-size: 15px;">Registrati</p>
<div style = "width: 240px; margin: auto;">
<table>
<tr>
<td>Nick:</td><td><input type = "text" id = "nickfield" maxlength = "20"></td>
</tr>
<tr>
<td>E-mail:</td><td><input type = "text" id = "emailfield" maxlength = "50"></td>
</tr>
<tr>
<td>E-mail privata:</td><td><input type = "radio" id = "radio1" name = "radio"><label for = "radio1">Yes</label><input type = "radio" id = "radio2" name = "radio" checked = "checked"><label for = "radio2">No</label></td>
</tr>
<tr>
<td></td><td><input type = "submit" value = "Registrati" onClick = "sendSignupForm(); return false;"></td>
</tr>
</table>
<div id = "signupmessage" style = "text-align: center; font-size: 10px; color: red;"></div>
</div>
</div>
<div style = "width: 600px; float: left; text-align: left; margin: 2px 10px 0px 6px;">
<a href = "#" onClick = "showLoginForm(); return false;">Accedi</a> <span style = "font-size: 14px;">|</span>
<a href = "#" onClick = "showSignupForm(); return false;">Registrati</a>
</div>
<div style = "width: 135px; float: left; text-align: right; margin: 5px 0px 0px 0px;">
<a href = "../en"><img src = "images/enflag.png" alt = "english" border = "0"></a>
<a href = "../it"><img src = "images/itflag.png" alt = "italiano" border = "0"></a>
</div>
<p style = "margin-top: 0px;"><img src = "images/dieffeweb.png" alt = "Dieffe web"></p>
<div id = "menudiv">
<div id = "menubuttons">
<div style = "width: 720px; margin-left: auto; margin-right: auto;"><a href = "index.php">Home</a><a href = "software.php">Software</a><a href = "jitchat.php">J-it Chat</a><a href = "websites.php">Siti web</a><a href = "contact.php">Contatti</a></div>
</div>
<div style = "clear:both;"></div>
</div>
</div>
<div id = "bodydiv">
<div id = "text">
<p style = "font-weight: bold; font-size: 15px;">Benvenuto su Dieffe web .com</p>
<div>
<script type="text/javascript"><!--
google_ad_client = "pub-7051746397843508";
/* 728x90, creato 01/05/08 */
google_ad_slot = "0681514957";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div style = "text-align: center; width: 520px; margin-right: auto; margin-left: auto;">
<a href = "jitchat.php"><img src = "images/downloadChat.png" alt = "Download chat" border = "0" style = "float:left;"></a>
<a href = "websites.php"><img src = "images/creationSites.png" alt = "Creation Sites" border = "0" style = "float:left; margin-left:6px;"></a>
<div style = "clear:both;"></div>
</div>
<div style = "clear:both;"></div>
</div>
</div>
</body>
</html>