[JS] Netscapedetectie bug

Pagina: 1
Acties:

  • rickmans
  • Registratie: Juli 2001
  • Niet online
Ik gebruik een klein stukje code om te detecteren of een gebruiker IE, NS4 of NS6 gebruikt. Helaas zit er een fout in dit kleine stukje code waardoor de pagina in zijn totaal niet laadt in NS4. Ik heb al diverse zaken aangepast, maar het rare ding doet het niet. Als ik een alert() tussen in de if statements zet, pakt die wel de alert, echter hij laat niet de pagina zien :{. Wat kan er mis zijn?

Stukje code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<cfoutput query="get_content">
                        <script type="text/javascript" language="JavaScript1.2">
                if(document.all)
                {
                document.write("<div style=\"height: 130; scrollbar-base-color: 999999; color: 999966; overflow=auto; margin-left: 20px; margin-right: 50px;\">");
                }
                else if(document.layers)
                {
                alert('netscape');
                document.write("<div>");
                }
                else if(document.getElementById)
                {
                document.write("<div style=\"color: 999966; margin-left: 20px; margin-right: 50px;\">");
                }
                else
                {
                document.write("<div style=\"color: 999966;\">");
                }

                </script>

#c_pagina_inhoud#</div></cfoutput>

Don't mind Rick


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:06

crisp

Devver

Pixelated

er zal misschien nog wel een andere fout in je code zitten?
In plaats van <div> kan je voor NS4 misschien ook beter een <layer> element gebruiken.
Nog een laatste tip: begin met de document.getElementById check

Intentionally left blank


Verwijderd

Dit is niet zo'n nette manier om DIVs te creeren in je document. Plus er is vanalles mis met je style-definities.

height: 130px;
scrollbar-base-color: #999999; (
color: #999966;
overflow:auto;
margin-left: 20px;
margin-right: 50px;

Dit helpt je niet met je Netscape probleem. Ik denk namelijk dat je in Netscape 4.x niet op deze manier een DIV kunt creeeren. Een andere manier om een (absoluut gepositioneerde) DIV te maken:
code:
1
var myLayer = new Layer(400);


Download eens een DHTML-api, daar staat het allemaal veel duidelijker in.

  • RM-rf
  • Registratie: September 2000
  • Nu online

RM-rf

1 2 3 4 5 7 6 8 9

crisp schreef op 11 oktober 2002 @ 13:02:
Nog een laatste tip: begin met de document.getElementById check
betwijfel dsat, msie5+ ondersteund dat al, maar ik denk dat de auteur daar iever scrollbar-styles laat uitvoeren.

natuurlijk is het voor scripting zaken beter getElementByID te gebruiken ipv. document.all, maar in dit geval is dat niet relevant.

wat ik mbt het probleem van de topicstarter eerder vermoed is dat er een incorrect opgezette tabel in de pagina zit, ns4x renderd deze niet, en zal aldus de content daarin niet tonen,
verder betwijfel ik het nut van een dusdanige opzet met browsercheckers die content wegschrijven, voldoet een browsercheck in de HEAD al niet, die vervolgens gewoon verschillende external stylesheets inlaad, of werken met wat css-based correctie- and browsercheck mogelijkheden; niet ondersteunde style-properties dienen genegeert te worden

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:06

crisp

Devver

Pixelated

RM-rf schreef op 11 oktober 2002 @ 13:10:
[...]


betwijfel dsat, msie5+ ondersteund dat al, maar ik denk dat de auteur daar iever scrollbar-styles laat uitvoeren.

natuurlijk is het voor scripting zaken beter getElementByID te gebruiken ipv. document.all, maar in dit geval is dat niet relevant.

wat ik mbt het probleem van de topicstarter eerder vermoed is dat er een incorrect opgezette tabel in de pagina zit, ns4x renderd deze niet, en zal aldus de content daarin niet tonen,
verder betwijfel ik het nut van een dusdanige opzet met browsercheckers die content wegschrijven, voldoet een browsercheck in de HEAD al niet, die vervolgens gewoon verschillende external stylesheets inlaad, of werken met wat css-based correctie- and browsercheck mogelijkheden; niet ondersteunde style-properties dienen genegeert te worden
Vergeet niet dat bijvoorbeeld Opera ook 'true' geeft op document.all, maar de scrollbar style toch niet zal laten zien; zoals je zelf al aangeeft worden niet ondersteunde style-properties genegeerd. Alleen NS4 heeft wel eens problemen met inline styles.
In feite zou je dus alleen voor NS4 alternatieve content hoeven te bieden.

Dit blijft echter inderdaad een lelijke oplossing waarbij je volkomen afhankelijk bent van javascript.

Intentionally left blank


  • rickmans
  • Registratie: Juli 2001
  • Niet online
crisp schreef op 11 oktober 2002 @ 13:02:
er zal misschien nog wel een andere fout in je code zitten?
In plaats van <div> kan je voor NS4 misschien ook beter een <layer> element gebruiken.
Nog een laatste tip: begin met de document.getElementById check
Volgens mij zit er geen andere fout in, als ik namelijk het stukje script weghaal dan dan pakt NS hem gewoon
Verwijderd schreef op 11 oktober 2002 @ 13:06:
Dit is niet zo'n nette manier om DIVs te creeren in je document. Plus er is vanalles mis met je style-definities.

height: 130px;
scrollbar-base-color: #999999; (
color: #999966;
overflow:auto;
margin-left: 20px;
margin-right: 50px;
px is inderdaad een slordigheidje, maar de # staan er bewust niet ivm coldfusion :).

Ik zit momenteel te denken om 2 stylesheets te gebruiken
eentje voor IE en andere browsers die ik include door middel van @import en een andere sheet voor de browsers die het niet aan kunnen ;)

Don't mind Rick


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Geloof het of niet, maar een document.layers check kan foutmeldingen geven in NS4. Vraag Clay maar :)

Doe ipv document.layers een appname- en version test..


rickmans schreef op 11 oktober 2002 @ 14:20:
[...]

Volgens mij zit er geen andere fout in, als ik namelijk het stukje script weghaal dan dan pakt NS hem gewoon


[...]
px is inderdaad een slordigheidje, maar de # staan er bewust niet ivm coldfusion :).

Ik zit momenteel te denken om 2 stylesheets te gebruiken
eentje voor IE en andere browsers die ik include door middel van @import en een andere sheet voor de browsers die het niet aan kunnen ;)



Waahhh.. Dus door ColdFusion moet je gewoon foute html/css gebruiken?

  • rickmans
  • Registratie: Juli 2001
  • Niet online
Bosmonster schreef op 11 oktober 2002 @ 14:39:
Geloof het of niet, maar een document.layers check kan foutmeldingen geven in NS4. Vraag Clay maar :)

Doe ipv document.layers een appname- en version test..
Dat is inderdaad ook een goede optie :)
Waahhh.. Dus door ColdFusion moet je gewoon foute html/css gebruiken?
Normaal gesproken zou ik het ook moeten kunnen escapen, maar ik had geen zin om dat op te zoeken :)

Don't mind Rick

Pagina: 1