bigskyMedlem sedan maj 2002825 inlägg
Jag använder följande kod till att ladda in stillmallar beroende på system och browser:
browserVer = parseFloat(navigator.appVersion);
if ((navigator.appVersion.indexOf("Mac") != -1)) {
document.write("<LINK REL=stylesheet HREF=\"/include/mac.css\" TYPE=\"text/css\">");
}
else if ((navigator.appName == "Microsoft Internet Explorer") && (browserVer > 1)) {
document.write("<LINK REL=stylesheet HREF=\"include/ie.css\" TYPE=\"text/css\">");
}
else if (document.layers) {
document.write("<LINK REL=stylesheet HREF=\"include/ns.css\" TYPE=\"text/css\">");
}
else if (navigator.appName == "Netscape" && document.getElementById) {
document.write("<LINK REL=stylesheet HREF=\"include/ns67.css\" TYPE=\"text/css\">");
}
Om man använder Opera för att surfa på sidan ser det bra ut så länge man har ställt in Opera att identifieras som IE eller olika versioner av Mozilla. Men ställer man in Opera att identifieras som just Opera laddas det ingen still mall. Hur ska jag anpassa koden ovan för att det ska fungera?
sabbacusMedlem sedan juli 2002629 inlägg
/* Alla webbläsare som ej angivits ovan får den här stilmallen*/
else {
document.write("<LINK REL=stylesheet HREF=\"include/whatever.css\" TYPE=\"text/css\">");
}
bigskyMedlem sedan maj 2002825 inlägg
Nej, det verkar inte fungera. Ser ut så här nu:
browserVer = parseFloat(navigator.appVersion);
if ((navigator.appVersion.indexOf("Mac") != -1)) {
document.write("<LINK REL=stylesheet HREF=\"include/mac.css\" TYPE=\"text/css\">");
}
else if ((navigator.appName == "Microsoft Internet Explorer") && (browserVer > 1)) {
document.write("<LINK REL=stylesheet HREF=\"include/ie.css\" TYPE=\"text/css\">");
}
else if (navigator.appName == "Netscape" && document.getElementById) {
document.write("<LINK REL=stylesheet HREF=\"include/ns.css\" TYPE=\"text/css\">");
}
else {
document.write("<LINK REL=stylesheet HREF=\"include/opera.css\" TYPE=\"text/css\">");
}
Peter SMedlem sedan dec. 20025 484 inlägg
Anledningen till det inte fungerar är just att webbläsare såsom Opera kan identifieras som IE, Mozilla, Netscape o.s.v. Den enda gången else-satsen i din kod kommer att köras är då besökaren ställt in sin webbläsare att identifieras som Opera.
Felet med koden är alltså att du laddar stilmall beroende på vad navigator.appName ger för sträng, vilket i Operas fall alltså kan vara i stort sett vad som helst.
Överväg att använda följande istället istället för navigator.appName:
...
navigator.userAgent;
...
För att identifiera Opera kan du göra så här:
...
var opera = ( window.opera && navigator.userAgent.toLowerCase().indexOf( "opera" ) != -1 );
...
:)
bigskyMedlem sedan maj 2002825 inlägg
Skulle du kunna visa hur jag ska konvertera koden? För att använda userAgent istället för appName.