Nefunkční prvky stránky

Problém je ve většině případů způsoben používáním document.all a document.layers. Jde o zastaralé objektové modely prvních opravdu použitelných prohlížečů. Document.all přišel spolu s MSIE 4, document.layers přinesl Netscape Communicator 4 v době tzv. "války prohlížečů". Oba modely jsou nestandardní a další verze těchto prohlížeču podporují standardizovaný DOM. Nekvalitní a v řadě případů také zastaralá literatura, nevhodné editory a zažité postupy však tyto modely stále používají.

Jelikož se prohlížeče MSIE 4 a Netscape 4 již prakticky nevyskytují, je oprava za použití DOM jednoduchá. Stačí provést v javascriptovém kódu následující záměnu:

  • document.all.id-objektu.hodnota -> document.getElementById("id-objektu").hodnota
  • document.layers.id-objektu.hodnota -> document.getElementById("id-objektu").hodnota

Pro případ, že i přesto chcete podporovat "čtyřkové" prohlížeče (za cenu ztráty řady vlastností v DOM), se nabízí v JavaScriptu následující řešení:

var IE=(document.all)?1:0;
var NS=(document.layers)?1:0;
var DOM=(document.getElementById)?1:0;

function GetObject(obj) {
	if (DOM) myObject=document.getElementById(obj);
		else if (IE) myObject=eval('document.all.'+obj);
			else if (NS) myObject=eval('document.layers.'+obj);
	return myObject;
}

Potom místo document.all, document.layers i document.getElementById stačí používat univerzální funkci GetObject. Tedy například GetObject("id-objektu").hodnota

Související odkazy

Informace o původním dokumentu

  • Autor: Josef Kotva

Štítky a přispěvatelé do dokumentace

 Přispěvatelé této stránky: Sebastianz, Triceo, Majda
 Poslední aktualizace od: Sebastianz,