2010-04-29 6 views
9

Ich habe eine Seite voller Links zu einer anderen Seite mit Ankern am Ende (wie folgt: index.html # anchor). Auf der Seite, auf die sie zeigen, habe ich ein Skript, das lesen soll, wohin der Anker zeigt, um etwas anzuzeigen.Reading URL Anchor auf IE

Auf Firefox funktioniert es perfekt, aber ich habe bemerkt, dass IE den #Anchor aus dem Ende der URL entfernt, so dass das Skript den Text nicht greifen kann. Gibt es einen Weg, ohne serverseitigen Code?

Antwort

5

Wie bekommt es die URL?

window.location.hash sollte contain the contents of the hash.

+0

Das ist, wie ich es im Drehbuch bekommen habe, aber es scheint IE den Hash aus der URL entfernt, sobald es geladen wird. nicht sicher warum, oder auch wenn es eine Lösung gibt. Danke trotzdem! – tominated

0

Enthält window.location immer noch den Anker auf IE, oder wird es dort auch entfernt? Wenn es immer noch da konnte man window.location und Split auf dem Hash verwenden:

var whole = "" + window.location; // location is object, make sure it's a String 
var parts = whole.split('#'); 
var anchor = parts[1]; 
+0

IE scheint es nicht im window.location zu halten. Danke für deine Idee! – tominated

+0

window.location.href? – wombleton

+0

das funktioniert auch nicht, fürchte ich. Es ergibt das gleiche Ergebnis wie window.location – tominated

0

versucht Genau wie diese

var url = window.location.search.substring(1) 
    var arr=url.split("#") 
    str=arr[1] 
2

ich den folgenden Code in IE getestet habe 6, 7 und 8 und die Der korrekte Hash wird in allen Fällen in der Alarmbox angezeigt.

<script type="text/javascript"> 

    function showHash() { 
     var currentUrl = "" + document.location; 
     var hash = ""; 
     var parts = currentUrl.split("#"); 
     if (parts.length > 1) { 
      hash = parts[1]; 
     } 
     alert("the current hash is: " + hash); 
    } 

</script> 

<input type="button" value="Show Hash" onclick="javascript: showHash();" /> 

Funktioniert dieser Code für Sie?

0

Hier ist eine Funktion, die hilft. Es gibt null zurück, wenn kein Anker vorhanden ist. ich es nicht in einem Util.js platziert, kommt es praktisch: D

function getAnchor() { 
    var currentUrl = document.URL, 
     urlParts = currentUrl.split('#'); 

    return (urlParts.length > 1) ? urlParts[1] : null; 
} 
Verwandte Themen