Чтение URL-привязки в IE - PullRequest
       46

Чтение URL-привязки в IE

9 голосов
/ 30 апреля 2010

У меня есть страница, полная ссылок на другую страницу с якорями в конце (например: index.html # anchor). На странице, на которую они указывают, у меня есть скрипт, который должен прочитать, куда указывает якорь, чтобы что-то отобразить.

В Firefox это работает отлично, но я заметил, что IE, кажется, удаляет #anchor из конца URL, поэтому скрипт не может получить текст. Есть ли способ обойти это без какого-либо серверного кода?

Ответы [ 5 ]

5 голосов
/ 30 апреля 2010

Как получается URL?

window.location.hash должен содержать содержимое хеша .

2 голосов
/ 14 мая 2010

Я протестировал следующий код в IE 6, 7 и 8, и во всех случаях в окне предупреждения отображается правильный хеш.

<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();" />

Этот код работает для вас?

0 голосов
/ 07 сентября 2012

Вот функция, которая помогает. Возвращает ноль, если якоря нет. Я поместил его в Util.js, он пригодится: D

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

    return (urlParts.length > 1) ? urlParts[1] : null;
}
0 голосов
/ 10 мая 2010

Просто попробуй вот так

    var url = window.location.search.substring(1)
    var arr=url.split("#")
    str=arr[1]
0 голосов
/ 30 апреля 2010

Содержит ли window.location якорь в IE или он там тоже удален? Если он все еще там, вы можете использовать window.location и разделить на хеш:

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