"Ryan" <ryan@NOSPAM.dk> writes:
> Det jeg bruger browseridentifikationen til er:
> if (ie4) {document.all['title21'].style.visibility = "hidden"; }
> if (ns4) {document.layers['title21'].visibility = "hide"; }
> if (ns6 || ie5) {document.getElementById(['title21']).style.visibility =
> "hidden"; }
> Jeg ved ikke om man kan sige at der er tale om en reel
> browseridentifikation, da det jo mere bare er et spørgsmål om, at finde ud
> af om jeg skal bruge document.all, layer eller getElementById. Her kan det
> vel være ligemeget at Opera 7 bliver genkendt som IE5, da det jo så også
> betyder, at Opera 7 forstår getElementById.
> Eller?
Rigtigt, i det her tilfælde, fordi den eneste anden egenskab du bruger
er ".style", som kun NS4 ikke forstår, og NS4 er relativt nem at
genkende). Der findes dog en anden browser der har document.layers og
som ikke er NS4 (OmniWeb tror jeg nok). Det vil måske virke alligevel
fordi den også har getElementById, og derfor tælles som både NS4 og NS6.
Som sagt, farligt.
> Er der en bedre måde at ændre på, hvorvidt indholdet af en div skal være
> hidden eller visible, som virker i de forskellige browsere?
> document.div['title21'].style.visibility = hidden/visible virker ikke som om
> det giver nogen effekt.
Nej, du skal have fat i elementet, og det jeg ville gøre er:
---
var elem;
if (document.getElementById) {elem = document.getElementById("idPåDiv");}
else if (document.all) {elem = document.all["idPåDiv"]; }
else if (document.layers) {elem = document.layers["idPåDiv"]; }
else { /* PANIK, rejs exception eller returner eller ... */ }
var elemStyle = elem.style || elem;
elemStyle.visibility = "visible";
---
Jeg tester ikke for hvilken browser det er, kun hvilke features den
har, så en helt ny browser vil stadig blive behandlet rigtigt (specielt
fordi standard-metoden er den der testes først, så Omniweb ikke løber
sur i document.layers, som findes men ikke virker).
> - Jeg er ikke helt sikker på, at jeg forstår dette (men jeg er sikker på at
> jeg ikke forstår det). Skal jeg forsøge at ændre det? Og i så fald, hvordan
> skal jeg så gribe det an?
document.getElementById(['title' + titletohide]).style.visibility
skal blot være
document.getElementById('title' + titletohide).style.visibility
Ingen firkantede parenteser nødvendigt. Det er lidt et tilfælde at det
virkede med dem ... det skyldes den måde arrays med et element bliver
lavet om til strenge. (Arrays kan skrives fx [2,3,4], du har et array
med et element hvor der burde være en streng)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:
http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'