Julia: JavaScript funktioniert einfach nicht in Safari

Hallo erstmal an alle,
ich bin seit Stunden am Internet wälzen, habe mir mein Skript zich mal angesehen aber ich komme einfach nicht drauf was da falsch sein könnte.

Ich habe folgendes Problem:

Auf einer Webseite steuere ich die aktiv Zustände meiner Navigation und Subnavigation per JavaScript (die Hover Effekte jedoch mit CSS).
Das mache ich weil ich die Seite in einem Template habe und um die Navigation nicht in einen bearbeitbaren Bereich packen zu müssen und auf jeder Seite den aktiv Zustand einzeln ändern zu müssen.

Das JavaScript funktioniert in Firefox, IE, Opera nur der Safari zeigt es mir garnicht an, da funktionieren lediglich die Hover Effekte.

Hier mal das JavaScript

// <![CDATA[

function linksAbrufen() {
 var navMainLinks = document.getElementById("head2").getElementsByTagName("a");
 var classON = "navion"; // CSS Klasse die die Definitionen für den aktiv Zustand enthält

var currentSiteURL = location.href;
 var currentSiteURLSplits = currentSiteURL.split("/");
 var currentSiteURLDir = currentSiteURLSplits[currentSiteURLSplits.length-2];

for (var i = 0; i <= (navMainLinks.length - 1); i++) {

var currentSiteURL = location.href;
  var navMainCurrentLinkSplits = String(navMainLinks[i]).split("/");
  var navMainCurrentLinkDir = navMainCurrentLinkSplits[navMainCurrentLinkSplits.length-2];

if (navMainLinks[i].href == window.location.href) {
   navMainLinks[i].className = classON;
   break;
  }

if (navMainCurrentLinkDir == currentSiteURLDir) {
   var navSubLinks = document.getElementById("navsub").getElementsByTagName("a");

for (var e = 0; e <= (navSubLinks.length - 1); e++) {
    if (navSubLinks[e].href == window.location.href) {
     navSubLinks[e].className = classON;
     navMainLinks[i].className = classON;
    }
   }
  }
 }
}

// ]]>

Das ganze wird dann im body mit onload="linksAbrufen();" aufgerufen.

Hat jemand eine Idee woran es liegen kann?

  1. Überprüfe einfach mal die Variablenwerte mit alert(). Ich vermute, dass schon die erste Variable falsch zugewiesen wird. Dass das überhaupt geht?

  2. Hallo,

    for (var i = 0; i <= (navMainLinks.length - 1); i++) {

    Warum schreibst du nicht einfach i < navMainLinks.length?

    Das ginge auch:
    for (var i = 0, element; element = navMainLinks[i]; i++) {

    Dann kannst du in der Schleife direkt auf element zugreifen.

    var currentSiteURL = location.href;
      var navMainCurrentLinkSplits = String(navMainLinks[i]).split("/");

    Anstatt den Elementknoten an String() zu übergeben und darauf zu hoffen, dass bei der Umwandlung die Linkadresse herauskommt, kannst du auch einfach das Attribut .href auslesen, das ist immer ein String.

    if (navMainLinks[i].href == window.location.href) {

    Hier nutzt du ja auch die href-Eigenschaft.

    Mathias

  3. LOL!

    Ich habs....

    Das ist ein komischer bug von meinem Safari,
    der zeigt mir mein Script irgendwie nur offline nicht an,
    was komisch ist weil er andere Scripte offline auch macht.

    Als ich es online geladen und angesehen hab ging es tadellos auch
    mit dem Safari.

    Danke für eure Bemühungen (:

    Gruß,
    Julia