Ich habe einen jQuery / JavaScript-Code, den ich nur ausführen möchte, wenn #
eine URL einen Hash ( ) - Ankerlink enthält. Wie können Sie mit JavaScript nach diesem Zeichen suchen? Ich benötige einen einfachen Sammeltest, der URLs wie diese erkennt:
example.com/page.html#anchor
example.com/page.html#anotheranchor
Grundsätzlich etwas in der Art von:
if (thereIsAHashInTheUrl) {
do this;
} else {
do this;
}
Wenn mich jemand in die richtige Richtung weisen könnte, wäre das sehr dankbar.
javascript
jquery
anchor
fragment-identifier
Philip Morton
quelle
quelle
.search
ist auf einem<a>
nicht verfügbar.query
. Beispiel jQuery :$("<a/>").attr({ "href": "http://www.somewhere.com/a/b/c.html?qs=1#fragmenttest" })[0]
..hash => "#fragmenttest"
und.search
=?qs=1
. Drücken Sie von dort aus die Frage nach der Querystring-Extraktion , um etwas anderes als eine Zeichenfolge zu erhalten.hashchange
Veranstaltung war und nichtwindow.location.hash
. Obwohl letzteres von IE <8 nicht unterstützt wird.quelle
Geben Sie Folgendes ein:
quelle
Wenn der URI nicht der Speicherort des Dokuments ist, macht dieses Snippet, was Sie wollen.
quelle
obj['0']
. In JS ist dies wahr:arr[0] === arr['0']
Wenn der Index / Schlüssel nicht vorhanden ist, ist der zurückgegebene Wert nicht definiert, sondern außerhalb der Grenzen. jsfiddle.net/web5me/Mw376Hast du das versucht?
(Wo
url
ist natürlich die URL, die Sie überprüfen möchten?)quelle
Dies wird das Problem lösen;)
quelle
gibt die Hash-ID zurück
quelle
... oder es gibt einen JQuery-Selektor:
quelle
Hier ist, was Sie tun können, um regelmäßig nach einer Änderung des Hash zu suchen und dann eine Funktion aufzurufen, um den Hash-Wert zu verarbeiten.
quelle
setTimeout(checkHash, 400)
. Außerdem haben moderne Browser dashashchange
Ereignis, so dass Sie eine durchführen könnenwindow.addEventListener('hashchange', function(){ … })
. Schließlich ist das Auslaufen der globalenhash
Variablen eine weitere nicht empfohlene Vorgehensweise, selbst zum Beispiel.Die meisten Benutzer kennen die URL-Eigenschaften in document.location. Das ist toll, wenn Sie nur an der aktuellen Seite interessiert sind. Die Frage war jedoch, ob Anker auf einer Seite analysiert werden können, nicht auf der Seite selbst.
Was die meisten Leute zu vermissen scheinen, ist, dass dieselben URL-Eigenschaften auch zum Verankern von Elementen verfügbar sind:
quelle
quelle
quelle
Partridge und Gareths Kommentare oben sind großartig. Sie verdienen eine gesonderte Antwort. Anscheinend sind Hash- und Sucheigenschaften für jedes HTML-Link-Objekt verfügbar:
Oder
Wenn Sie dies für eine reguläre Zeichenfolgenvariable benötigen und zufällig jQuery haben, sollte dies funktionieren:
(aber es ist vielleicht etwas übertrieben ..)
quelle
Wirf dies hier als Methode zum Abstrahieren von Positionseigenschaften von beliebigen URI-ähnlichen Zeichenfolgen ein. Obwohl dies
window.location instanceof Location
zutrifft, werden Sie bei jedem Aufruf desLocation
Aufrufs darauf hingewiesen, dass es sich um einen illegalen Konstruktor handelt. Sie können die Dinge noch wiehash
,query
,protocol
usw. von Ihrem String als Einstellunghref
Eigenschaft eines DOM Ankerelement, das dann alle der Adressen Eigenschaften teilenwindow.location
.Der einfachste Weg, dies zu tun, ist:
Der Einfachheit halber habe ich eine kleine Bibliothek geschrieben, die dies verwendet, um den nativen
Location
Konstruktor durch einen zu ersetzen, der Zeichenfolgenwindow.location
akzeptiert und ähnliche Objekte erzeugt: Location.jsquelle
Normalerweise stehen Klicks an erster Stelle, wenn sich der Standort ändert. Nach einem Klick ist es daher eine gute Idee, setTimeOut festzulegen, um die Datei window.location.hash zu aktualisieren
oder Sie können den Ort anhören mit:
Ich habe ein jQuery-Plugin geschrieben , das so etwas wie das macht, was Sie tun möchten.
Es ist ein einfacher Ankerfräser.
quelle
Hier ist eine einfache Funktion, die zurückgibt
true
oderfalse
(hat / hat kein Hashtag):Gibt
true
in diesem Fall zurück.Basierend auf dem Kommentar von @ jon-skeet.
quelle
Dies ist eine einfache Möglichkeit, dies für die aktuelle Seiten-URL zu testen:
quelle
Manchmal erhalten Sie die vollständige Abfragezeichenfolge wie "#anchorlink? firstname = mark".
Dies ist mein Skript, um den Hash-Wert zu erhalten:
quelle