c0de: jQuery funktion auf URL hören?

Salut!

Ich experimentiere grade etwas mit jQuery bin allerdings gerade auf meiner erste Hürde gestossen!

Ich möchte das eine Funktion immer nur ausgeführt wird wenn sich die URL ändert, und onload.

Mein Problem ist, ich gebe Video Ids weiter:
http://dotmusic.tk/#v/TR5Qo4Pnc94

kann sie auch auslesen und anzeigen, aber ich möchte:
1.: Das wenn man die Seite direkt mit Video ID aufruft, die Funktion direkt ausgeführt wird
2.: Das wenn sich sie URL ändert (auch mit JS) das die Funktion ausgeführt wird

3.: (Nebenbei) Weisst jemand wie ich:
http://dotmusic.tk/TR5Qo4Pnc94
automatisch zu:
http://dotmusic.tk/#v/TR5Qo4Pnc94
weiterleiten kann?

Schonmal Danke!
L.g. c0de

  1. 1.: Das wenn man die Seite direkt mit Video ID aufruft, die Funktion direkt ausgeführt wird

    Lol, sorry. Punkt 1 ist natürlich hinfällig, das bekomm ich so auch hin ^^

    L.g. c0de

  2. Hallo,
    habe mir deine Seite mal angeschaut. Ich muss sagen: Gefällt mir :-p

    2.: Das wenn sich sie URL ändert (auch mit JS) das die Funktion ausgeführt wird

    Wenn ich das richtig verstehe, willst du auf eine Änderung des Ankers reagieren.
    Ich beschäftige mich zurzeit mit dem gleichen Thema (http://forum.zeroskull.ch/#987/#1)

    Ich habe es wie folgt gelöst:

      
    $(document).ready(function(){ //Wenn die Seite fertig geladen ist.  
       $("a[href]:not(a[onClick]):not(a[href=#])").live("click",function(){  
     //Url Parser  
     //bzw. deine Funktion (Punkt 2)  
      
    });  
    //Kommentar zu der komplizierten Zeile: Binde allen Links die existieren oder noch erstellt werden den Url Parser. Ausserdem müssen Sie ein Verweisziel haben welches nicht '#' ist, und dürfen kein onClick Attribut haben.  
    		  
      
    //Ausserdem kannst du hier (<--) auch deine Funktion aufrufen. (Punkt 1)  
    });  
    
    

    3.: (Nebenbei) Weisst jemand wie ich:
    http://dotmusic.tk/TR5Qo4Pnc94
    automatisch zu:
    http://dotmusic.tk/#v/TR5Qo4Pnc94
    weiterleiten kann?

    Erkundige dich mal über mod_rewrite (Server seitig).

    Gruss Timo

    1. Hallo,
      habe mir deine Seite mal angeschaut. Ich muss sagen: Gefällt mir :-p

      Danke ^^ bin selbst erstaunt wie hübsch sie ist ^^

      Wenn ich das richtig verstehe, willst du auf eine Änderung des Ankers reagieren.

      Ich habe es wie folgt gelöst:

      $(document).ready(function(){ //Wenn die Seite fertig geladen ist.
         $("a[href]:not(a[onClick]):not(a[href=#])").live("click",function(){
      //Url Parser
      //bzw. deine Funktion (Punkt 2)

      });
      });

      
      >   
      
      Werd das gleich mal ausprobieren!  
      Grossen dank!  
        
      L.g. c0de
      
    2. Hallo nochmal Timo!

      Deine Methode ist offensichtlich genau das was ich brauche!

      Jetzt hab ich allerdings das Problem das, immer die letzte und nich der Aktuelle URL geladen wird!?
      Woran könnte das liegen?

              $("a[href]:not(a[onClick]):not(a[href=#])").live("click",function(){  
               var docuurl = window.location.hash;  
               var qsearch = docuurl.search("#v=");  
                if(qsearch != -1) {  
                 $("#right").show("slow");  
                 var urlsplit = docuurl.split("#v=");  
                 $("#right").load("youtube.api.php",  
                    {  
                      v: urlsplit[1],  
                      size: 1  
                    }  
                 );  
                }  
               });
      

      Also es funktioniert perfekt, bis auf das das es nicht die Aktuelle URL ist sondern die jeweils Letzte!

      L.g. C0de

      1. Hallo nochmals,
        stimmt. Das habe ich ganz vergessen zu erwähnen, tut mir leid.

        Der Browser benötigt eine gewisse Zeit um zu reagieren.
        Ein Timeout von 10ms reicht, aus eigener Erfahrung. Also passe deinen Code doch einfach so an:

          
          
         $("a[href]:not(a[onClick]):not(a[href=#])").live("click",function(){  
                 setTimeout(function(){  
                     var docuurl = window.location.hash;  
                     var qsearch = docuurl.search("#v=");  
                     if(qsearch != -1) {  
                       $("#right").show("slow");  
                       var urlsplit = docuurl.split("#v=");  
                       $("#right").load("youtube.api.php",  
                         {  
                          v: urlsplit[1],  
                          size: 1  
                         }  
                       );  
                     }  
                 },10);  
         });  
        
        

        Gruss und gute Nacht
        Timo

        (Ps: Wenn deine Seite fertig ist, sende doch mal einen Link an mich :-p)

  3. Hallo シ

    kann sie auch auslesen und anzeigen, aber ich möchte:
    2.: Das wenn sich sie URL ändert (auch mit JS) das die Funktion ausgeführt wird

    Nur so noch als weiterer Denkansatz: was ist wenn jemand im Browser den Zurück-Button benutzt?

    —Gabriel