PDA

View Full Version : [xHTML strict] Problema con un javascript


MrModd
13-02-2009, 16:21
Sto creando una pagina in xHTML strict 1.1 con fogli di stile 2.1, ma ho un problema.
Ho installato una sidebar in javascript: lo script 770 di questa (http://www.allwebfree.it/script_index.php?numscri=1&tipscri=1) pagina (qui (http://www.allwebfree.it/listascript/770.html) il demo).
Ho perso un sacco di tempo a riadattare tutta la struttura secondo gli standard del W3C, ma mi è rimasto un problema.
Se ci sono le stringe di intestazione...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

...non funziona. Se le tolgo invece funziona.
Ho verificato con il validator che senza il DOCTIPE la pagina è riconosciuta come Transitional.

Questa è la porzione di codice problematica:

<body onload="slideMenuInit()">

<!-- Modificare il valore di "rowspan=" per cambiare il numero di voci visualizzate -->
<table id="menu" onmouseover="slideIn()" onmouseout="slideOut()">
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">home</a></td>
<td rowspan="7" class="txt">I<br/>N<br/>D<br/>I<br/>C<br/>E</td>
</tr>
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">Primo link</a></td>
</tr>
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">Secondo link</a></td>
</tr>
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">Terzo link</a></td>
</tr>
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">Quarto link</a></td>
</tr>
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">Quinto link</a></td>
</tr>
<tr>
<td class="txt" onmouseover="changeBG(this,'#330055')" onmouseout="changeBG(this,'#3300CC')"><a href="#">Sesto link</a></td>
</tr>
</table>


Come devo modificarlo?
Preciso che se do in pasto al validator il file con il DOCTYPE me lo riconosce come STRICT e non mi da errori.

EDIT:
Con Internet Explorer funziona. La console degli errori di Firefox mi dice questo:

Errore nell'interpretazione del valore della proprietà 'top'. Dichiarazione tralasciata.

SerMagnus
13-02-2009, 17:09
ma con strict che io sappia si intende xhtml 1.0, la versione 1.1 è un'altra cosa, e cmq sinceramente nn credo sia consigliatissimo utilizzarla, cmq sia per sfizio, se provi a impostare il doctype in vero strict 1.0

con
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">


che succede?

inoltre fai anche un'altra prova, eliminando la dichiarazione <?xml version="1.0" encoding="UTF-8"?> inziale

MrModd
13-02-2009, 17:26
Da quanto so l'1.1 è una revisione dell'xHTML 1.0 basata sullo strict. Dovrebbe essere ancora più rigido.

Comunque né togliendo la dichiarazione del xml, né mettendo il DOCTYPE xHTML 1.0 strict funziona. Penso sia un problema di script, ma non so perchè su IExplorer e togliendo il DOCTYPE funziona.

Ho pure provato a mettere il DOCTYPE del Transitional, ma non funziona.


EDIT:
Questa è la dichiarazione della funzione che penso causi il problema nel file javascript:

function slideMenuInit(){
if(ie5 || ns6){
document.getElementById('menu').style.visibility = "visible";
document.getElementById('menu').style.left = -MenuLeft;
document.getElementById('menu').style.top = MenuTop;
}
}


EDIT2:
O forse è questo:

function statik(){
if(ie5){
document.getElementById('menu').style.top = document.body.scrollTop + MenuTop;
}
if(ns6){
document.getElementById('menu').style.top = window.pageYOffset + MenuTop;
}
}

MrModd
13-02-2009, 17:27
Ops, doppio post...

MrModd
14-02-2009, 21:37
Nessuna idea?

SerMagnus
15-02-2009, 11:48
se togli il doctype và in quirks mode, quella di massima compatibilità

MrModd
15-02-2009, 12:59
Io credo sia un problema nello script.
Sapendo che in quirks mode funziona, ma negli altri modi no, e conoscendo lo script, non riuscite a risalire al problema?

SerMagnus
15-02-2009, 22:12
ma nn hai una demo online?

MrModd
16-02-2009, 10:45
ma nn hai una demo online?

Si, l'ho linkata nel mio primo post. Solo, come ho scritto, l'ho riadattato allo standard W3C seguendo l'xHTML 1.1 e mi compare questo problema.

EDIT:
Tra l'altro ho notato ora che il demo non ha il DOCTYPE e, aggiungendolo, causa lo stesso errore che ho io.

MrModd
23-02-2009, 18:05
Niente da fare? Me lo devo tenere così?