muderseb: Anfänger-Frage zum Thema URLs auslesen...

Hallo,

Folgende JavaScript-Anfänger-Frage: ich möchte, dass beim Laden der Seite (onload) abgeprüft wird, ob sie eine bestimmte URL aufweist. Wenn ja, soll eine Funktion gestartet werden. Gemäß diesen Überlegungen habe ich folgenden Code in die externe JavaScript-Datei geschrieben:

var urlLesen = document.URL
if (urlLesen == "http://127.0.0.1/Debattierclub%20-%20Testseite/Kontakt/Kontakt-Sponsoring.shtml")
{ SwitchButtonSponsoring()
}

Einfaches Problem: Es funktioniert nicht. Ist irgendwas am Code fehlerhaft oder muss es an irgendwas anderem liegen? Wenn ich den Code nicht in eine Funktion einbinde, müsste er doch automatisch ausgeführt werden, sobald die Seite geladen wird?

Viele Grüße,
Sebasitan

  1. Tach,

    var urlLesen = document.URL

    hast du mal nachgesehen, was tatsächlich in document.URL steht?
    Und warum kopierst du diese Information nochmal um, anstatt document.URL direkt zu verwenden?

    if (urlLesen == "http://127.0.0.1/Debattierclub%20-%20Testseite/Kontakt/Kontakt-Sponsoring.shtml")
    { SwitchButtonSponsoring()
    }

    Beachte, dass beim Stringvergleich auch Groß- und Kleinschreibung exakt verglichen wird.

    Ist irgendwas am Code fehlerhaft oder muss es an irgendwas anderem liegen?

    Naja, ich vermisse das Semikolon am Ende der Anweisungen, aber das *darf* man in JS tatsächlich weglassen, solange das syntaktisch eindeutig ist. Ich bin's halt gewöhnt, der Ordnung halber.

    Wenn ich den Code nicht in eine Funktion einbinde, müsste er doch automatisch ausgeführt werden, sobald die Seite geladen wird?

    Ja, und zwar genaugenommen schon, *während* die Seite geladen wird. Ist natürlich denkbar, dass document.URL zu der Zeit noch gar nicht die erwartete Information enthält.

    So long,
     Martin

    --
    Most experts agree: Any feature of a program that you can't turn off if you want to, is a bug.
    Except with Microsoft, where it is just the other way round.
    1. Hallo nochmal,

      vielen Dank für eure bisherige Hilfe! Die Funktion von Steffen hat tatsächlich funktioniert!

      Allerdings bleibt ein (mir bisher unerklärlicher) Wehmutstropfen: Zwar wird die Funktion geladen, wenn man sich bereits im entsprechenden Dokument befindet und dann aktualisiert. Klicke ich aber den entsprechenden Link an, der zu dieser Seite führt, wird die Funktion unerklärlicherweise nicht geladen. Weiß jemand warum?

      @Steffen: Die Fehlerkonsole meines Firefox gab bei der alten Version der Funktion (hab's gerade noch mal versucht) überhaupt keine Meldung aus.

      Viele Grüße,
      Sebastian

      1. Hallo nochmal,

        Allerdings bleibt ein (mir bisher unerklärlicher) Wehmutstropfen: Zwar wird die Funktion geladen, wenn man sich bereits im entsprechenden Dokument befindet und dann aktualisiert. Klicke ich aber den entsprechenden Link an, der zu dieser Seite führt, wird die Funktion unerklärlicherweise nicht geladen. Weiß jemand warum?

        Mittlerweile weiß ich, warum: Ich habe bereits Funktionen erstellt, die auch beim darüberfahren mit der Maus dieselbe Funktion ein- und beim wegfahren wieder ausschalten. Wenn man also auf den Button klickt und die Seite geladen wird, funktioniert die Funktion auch, wird aber wieder abgeschaltet, wenn man mit der Maus aus den Button-Bereich verlässt.

        Konkretisierte Frage: Wie kann ich auch die onmouseover/out Funktion beibehalten und dennoch verhindern, dass letztere auch dann zum Zuge kommt, wenn vorher mit demselben Button die infrage stehende URL geöffnet wurde?

        Sollte ich zwischenzeitlich selbst die Lösung finden, gebe ich hier nochmal Bescheid.

        Viele Grüße,
        Sebastian

      2. Hallo,

        vielen Dank für eure bisherige Hilfe! Die Funktion von Steffen hat tatsächlich funktioniert!

        also war meine Vermutung bezüglich des Timings wohl richtig: *Während* des Ladens enthält document.URL noch keine verwertbare Information.

        Zwar wird die Funktion geladen, wenn man sich bereits im entsprechenden Dokument befindet und dann aktualisiert. Klicke ich aber den entsprechenden Link an, der zu dieser Seite führt, wird die Funktion unerklärlicherweise nicht geladen. Weiß jemand warum?

        Mit "geladen" meinst du wohl "ausgeführt".
        Das könnte aber ein Caching-Problem sein. Der onload-Handler wird nicht immer beachtet, wenn das Dokument aus dem Cache geladen wird, anstatt es neu vom Server anzufordern.
        Viel mehr kann ich aus deiner Beschreibung jetzt nicht herauslesen ...

        @Steffen: Die Fehlerkonsole meines Firefox gab bei der alten Version der Funktion (hab's gerade noch mal versucht) überhaupt keine Meldung aus.

        Das heißt, die Eigenschaft document.URL existiert schon (sonst käme beim Zugriff eine Fehlermeldung), ist aber noch leer.

        Ciao,
         Martin

        --
        Die letzten Worte des Architekten:
        Mir fällt da gerade was ein...
  2. Hallo muderseb,

    ich möchte, dass beim Laden der Seite (onload) abgeprüft wird, ob sie eine bestimmte URL aufweist. Wenn ja, soll eine Funktion gestartet werden. Gemäß diesen Überlegungen habe ich folgenden Code in die externe JavaScript-Datei geschrieben:

      
    
    > var urlLesen = document.URL  
    > if (urlLesen == "http://127.0.0.1/Debattierclub%20-%20Testseite/Kontakt/Kontakt-Sponsoring.shtml")  
    > { SwitchButtonSponsoring()  
    > }  
    
    

    Einfaches Problem: Es funktioniert nicht.

    Funktioniert nicht funktioniert nicht! Was sagt dir die Fehlerkonsole deines Browsers?

    Ist irgendwas am Code fehlerhaft oder muss es an irgendwas anderem liegen? Wenn ich den Code nicht in eine Funktion einbinde, müsste er doch automatisch ausgeführt werden, sobald die Seite geladen wird?

    AFAIR wird dadurch der Code _sofort_ ausgeführt, sobald er geladen wurde. Was mich ein bisschen wundert: Du erwähnst selbst den Begriff onload, aber im Script ist davon nichts zu sehen. Versuch es mal hiermit:

    window.onload = function ()  
    {  
        var urlLesen = "http://127.0.0.1/Debattierclub%20-%20Testseite/Kontakt/Kontakt-Sponsoring.shtml";  
        if (document.URL == urlLesen)  
            SwitchButtonSponsoring();  
    }
    

    Mit freundlichen Grüßen,
    Steffen Bruchmann

    --
    Mein Selfcode: ie:{ fl:( br:> va:) ls:& fo:| rl:( n4:& ss:| de:> js:| ch:{ mo:} zu:}