Angezeigte URL ändern?

multimolti

Erfahrenes Mitglied
Hallo!

Ich dachte, das sei unmöglich, aber es scheint doch irgendwie zu gehen: mit JavaScript die URL, die oben in der Adressleiste angezeigt wird, verändern (natürlich ohne auf eine andere Seite zu verlinken).
Facebook macht das, wenn ich auf einem anderen Profil bin, sieht meine URL so aus:
Code:
http://www.facebook.com/profile.php?v=feed&id=646798359#/profile.php?v=feed&id=646798359&pub=2915120374
Und wenn ich dann auf "Share Link" klicke, ändert sich die Adresse in
Code:
http://www.facebook.com/profile.php?v=feed&id=646798359#/profile.php?v=feed&id=646798359&pub=2309869772
(es ändert sich nur der Parameter "pub")
Wie macht man sowas? Facebook hat den JavaScript Code natürlich "obfuscated" (kp wie das auf deutsch heißt), daher will ich mich da jetzt nicht durchwühlen.

Danke für eure Hilfe!
 
Diese Änderung findet im Fragment der URL statt, was keine erneute Anfrage auslöst. Dies wird häufig zusammen mit Ajax verwendet, um dennoch die Verlaufsfunktionen des Browsers nutzen zu können.
 
Nimm einfach die aktuelle URL, tausche die gewünschten Daten aus und setz sie als neue aktuelle.
 
Die aktuelle URL steht im document.location-Objekt, entweder direkt zusammengesetzt in document.location.href oder die einzelnen Teile jeweils in document.location.protocol, document.location.host, etc. Damit kann die aktuelle URL beliebig verändert werden und anschließend mittels document.location.assign()-Methode wieder zugewiesen werden.
 
Sorry, ich habe das gleiche Problem und verstehe es nicht ganz.

Also ich möchte auch per AJAX Inhalte laden und die entsprechenden Get-Variabeln in der Adresszeile ändern und setzen, damit man auch über ein Lesezeichen dahinkommt, oder die URl verschicken kann.

Wenn ich folgendes mache lädt er die Seite aber neu und ich lese irgendwie überall im Internet, dass man die Adresszeile nicht ändern könne ohne die Seite neu zu laden.

Code:
window.location.assign($(this).children("a").attr("href"));

PS Ich nutze das jQuery-FW

Dankeschonmal

PS: Mit document.loccation.assign das gleiche.
 
Zuletzt bearbeitet:
Hallo Noeden,

bin gerade über diesen Eintrag gestolpert, da ich zur Zeit ein jQuery-Plugin entwickle, welches so funktioniert wie hier beschrieben. Hoffe es hilft dir und jedem der ebenfalls über diesen Eintrag stolpert weiter. http://www.dreiwerken.de/jquery-hashevent-plugin.html

Habe mich da auch von Facebook insperieren lassen, jedoch um die URL so zu manipulieren wie es Facebook macht, braucht man ein riesiges Workaround. Wenn ich das richtig verstehe greift Facebook sehr tief in die nativ-Funktionen des Browsers ein und verändert diese.

Mein Plugin arbeitet mit Hash-Tags. Das Ergebnis ist das Gleiche ;)

Viel Spaß damit und hoffe es hilft dem einen oder anderem bei seinem nächsten Projekt ;)

Viele Grüße
Vadim Justus
 
Wollte hier auch noch kurz was einwerfen. Habe gerade mit der HTML5 history API gearbeitet (wie Facebook) und bin absolut begeistert. Alles was ich brauche ist

Javascript:
if ('replaceState' in history) {
    history.replaceState(null, document.title, url);
}

Firefox, Opera und Chromium funktioniert perfekt und IE ignoriert es. Damit kann ich absolut leben, weil meine AJAX Suchmaske vorher völlig ohne URL Änderung aus kam. Und ich habe keine Lust auf ein Workaround mittels Hash. Die drei Zeilen JavaScript konnte ich einfach in meine vorhandene Anwendung einbinden ;)
 

Neue Beiträge

Zurück