Ich entwickle eine Web-App. Darin befindet sich ein Abschnitt namens Kategorien, in dem jedes Mal, wenn ein Benutzer auf eine der Kategorien klickt, ein Update-Bereich den entsprechenden Inhalt lädt.
Nachdem der Benutzer auf die Kategorie geklickt hat, möchte ich die Adressleisten-URL des Browsers ändern
www.mysite.com/products
zu so etwas
www.mysite.com/products/{selectedCat}
ohne die Seite zu aktualisieren.
Gibt es eine Art JavaScript-API, mit der ich dies erreichen kann?
quelle
path
und / oderquery string
in der URL; Sie können das Protokoll, die Domäne oder den Port nicht ändern (da dies ein Sicherheitsproblem wäre, wie andere darauf hingewiesen haben). Diehash
obige Funktion kann den Anker (oder die Fragment-ID) ändernUm das zu ergänzen, was die Jungs bereits gesagt haben, bearbeiten Sie die Eigenschaft window.location.hash so, dass sie mit der URL übereinstimmt, die Sie in Ihrer Onclick-Funktion haben möchten.
quelle
Ich glaube, dass es aus Sicherheitsgründen nicht zulässig ist, die Adressleiste direkt auf eine völlig andere URL zu ändern, ohne zu dieser URL zu wechseln, wenn Sie damit zufrieden sind
www.mysite.com/products/#{selectedCat}
dh ein Link im Ankerstil auf derselben Seite, dann schauen Sie sich die verschiedenen Verlaufs- / "Zurück-Schaltfläche" -Skripte an, die jetzt in den meisten Javascript-Bibliotheken vorhanden sind.
Die Erwähnung des Update-Panels lässt mich vermuten, dass Sie asp.net verwenden. In diesem Fall ist die Ajax-Verlaufssteuerung von asp.net ein guter Ausgangspunkt
quelle
Ich denke nicht, dass dies möglich ist (zumindest das Wechseln zu einer völlig anderen Adresse), da dies ein nicht intuitiver Missbrauch der Adressleiste wäre und Phishing-Angriffe fördern könnte.
quelle
Dies kann nicht so gemacht werden, wie Sie es sagen. Die von somej.net vorgeschlagene Methode ist die nächstgelegene. Im AJAX-Zeitalter ist dies eigentlich sehr üblich. Sogar Google Mail nutzt dies.
quelle
wie von sanchothefat vorgeschlagen, sollte der einzige Weg sein, dies zu tun. Da alle Orte, an denen ich diese Funktion gesehen habe, die ganze Zeit nach der # in-URL stehen.
quelle