Struppi: switch-anweisungen funktionieren nicht korrekt

Beitrag lesen

hallo javascriptler
langsam verzweifle ich...seit tagen versuche ich, unten angehängtes script (t2) anzupassen. das script soll plattformen (mac, pc) und browser (msie, ns) bzw. deren versionen (4, 5, 6 und 4, 5) abfragen und die passende seite entsprechend ausgeben.

Sowas ist absolut unnötig, wenn es bei dir nötig sein soll ist mit Sicherheit irgendetwas an deinem HMTL/CSS kaputt.

Es gibt einige situationen, wo es für ältere Browser besser ist, z.b. CSS zu verstecken (z.b. vor NC 4.x mit media="all")
Sollte es sich aber um JS Code handeln ist es auf jeden Fall sinnvoller einfach zuprüfen, was der Browser kann, anstatt diese nichsagenden Strings auszuwerten:

platform = navigator.platform;
browser = navigator.appName;
version = navigator.appVersion.substring(0,1);

Die sagen wirklich nichts über die Fähigkeit des jeweiligen Browser aus.

Besser ist es z.b. um Layerobjekte zu referenzieren:

function getObjByName(name)
{
var obj;
if(document.getElementByName) obj = document.getElementByName(name);
else if(document.layers) obj = document.layers[name];
else if(document.all) obj = document.all[name];
return obj;
}

Damit kriegst du alle Browser, die dHTML können.

switch (platform)
{

solche switch-case Blöcke können wesentlich eleganter Programmiert werden. Ich kenne diese vor allem von VB programmierern und da in erster Linie bei windows programmen, wo events abgearbeitet werden müssen. I.d.R. sind aber solche Blöcke eher kontraproduktiv den übersichtlich.

Ich zeig mal was ich meine:

case "Netscape":
     switch(version)
  {
     case "4" : window.location.href="pc_ns_4.html";
  break;
     case "5" : window.location.href="pc_ns_5.html";
  break;
  case "6" : window.location.href="pc_ns_6.html";

das liesse sich prima in einen 2-Zeiler wandeln:

if(browser == 'Netscape') url = 'pc_ns_' + version + '.html';
window.location = url;

Struppi.