HTML

Az Internet Explorer és a javascript

2008.02.15. 15:50 webnegative (törölt)

Már többen is szóltak, hogy Internet Explorer  - első sorban 6-os és 7-es széria - alól nem akaródzik a szavazásnak rendesen működni. Megjelennek a csillagok, a kurzor kinézete is a linkeknél ismert módon megváltozik, de kattintáskor az ég adta világon semmi nem történik.

Megnéztem IE 5-ös, 6-os és 7-es, valamint Firefox és Opera böngészőkkel is. Egyedül IE 7 alatt tapasztaltam a hibát. Lehet, hogy a 6-os verziójú IE régebbi változat, mint a problémát tapasztaló felhasználóé volt és az enyémben még nem jelent meg ez a hiba. Gondolom valami patch tolta el a szekeret.

Az IE 7 jobban szereti az XHTML-t, mint a HTML 4-et, főleg mert a web 8.0-ra hajaz. :) Ezért a lustán megírt HTML kimenetet átírtam teljesen XHTML 1.0 szerintire. És ekkor jött a megvilágosodás, amit addig nem értettem.

Az XHTML szigorú szabvány és könnyen elvérezhet rajta az ember, már egy elmaradt alt, title miatt is. Nekiugrottam a W3C validatornak és tökéletesre csiszoltam a forrást.

Ekkor jöttem rá, hogy a validator mindig kiakad a javascripten és az ott leledző "<" jelet az XML proci mindig tag nyitásnak értékeli. Ettől megdöglik a HEAD, BODY, néhány DIV és persze a szavazáshoz szükséges linkek is. Mert végig keresi kódban annak a nyamvadt megnyitásnak a lezárását.

Persze lezárhattam volna egy kamura elejtett ">" jellel, de az nem túl elegnáns. Ehelyett a régen elfeledett megoldáshoz nyúltam. és nem kellett csalódnom.

A problémát okozó kódrészlet így nézett ki (az érdektelen részeket kivettem belőle):

<script type="text/javascript" language="javascript">

var orig = Array();
var i;

function overtrick(tp,n){
for(i=1;i<=n;i++) {
var x = tp+''+i;
imlayer = document.getElementById(x);
orig[x] = imlayer.src;
imlayer.src = 'rateh.gif';
}
}

function outtrick(tp,n){
for(i=1;i<=n;i++) {
var x = tp+''+i;
imlayer = document.getElementById(x);
imlayer.src = orig[x];
}
}
</script>

A sárgával jelölt sorokban látható "<" jel volt a ludas. Ezek miatt két megnyitott tag is ott lebegett a semmiben. Pedig a kód és az oldal forrása is hibátlan volt. Nem is kellett igazából  sokat módosítani rajta.

<script type="text/javascript" language="javascript">

//<![CDATA[

var orig = Array();
var i;

function overtrick(tp,n){
for(i=1;i<=n;i++) {
var x = tp+''+i;
imlayer = document.getElementById(x);
orig[x] = imlayer.src;
imlayer.src = 'im/rateh.gif';
}
}

function outtrick(tp,n){
for(i=1;i<=n;i++) {
var x = tp+''+i;
imlayer = document.getElementById(x);
imlayer.src = orig[x];
}
}

//]]>

</script>

Ez az egyszerű módosítás meg is oldotta a problémát. A CDATA-n belül helyet foglaló részeket az XML értelmező normál szövegként értékeli és nem értelmezi a benne található megjegyzéseket, utasításokat, stb.

Szólj hozzá!

Címkék: programozás probléma script webdesign hibajavítás

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása