window.location не работает правильно в IE7 / 8 - PullRequest
4 голосов
/ 27 января 2011

У меня есть div, внутри которого есть. Я хочу нажать на div и следовать той же ссылке, что и a. Это HTML:

<div class="overview white getchildurl">
    <p class="w70">
    05-02-2011
    </p>
    <a class="button" href="details/">Details</a>
    <span class="clear"></span>
</div>

и у меня есть этот скрипт:

$('.getchildurl').each(function() {     
    $(this).click(function() {
        var href = $(this).children('a').first().attr('href');
        window.location = href;
    });
});

Это работает в Firefox 3.6, Chrome, Safari, но не в IE7 и IE8. Он перезагружает страницу, но остается на той же странице. Я проверил var href, он имеет правильный URL, но не идет туда. Что я делаю не так?

Спасибо.

РЕДАКТИРОВАТЬ: Сделав его абсолютным URL, он заработал. Это новый скрипт:

$('.getchildurl').each(function() {     
    $(this).click(function() {
        var href = $(this).children('a').first().attr('href');
        var host = window.location.hostname;
        window.location = 'http://' + host + '/' + href;
    });
});

Ответы [ 4 ]

3 голосов
/ 27 января 2011

Я публикую это как другой ответ, потому что это другой ответ.Как решить проблему с JavaScript вместо того, чтобы работать с HTML и CSS.

Попробуйте изменить отображаемый JavaScript и убедитесь, что значения соответствуют вашим ожиданиям

$(this).click(function() {
    var href = $(this).children('a').first().attr('href');
    alert(href)
    alert(href.length)
    window.location = href;
});

Тоотобразит href и href длину.Убедитесь, что длина совпадает.Если длина слишком велика, это означает, что есть скрытые символы.

Если вы решите, что проблема связана с синтаксисом, многие исправления / преобразования URL-адресов можно выполнить с помощью JavaScript.Например, удалить косую черту, когда она есть, можно с помощью

$(this).click(function() {
    var href = $(this).children('a').first().attr('href');
    window.location = href.replace(/\/$/, '');
});

Кроме того, URL-адрес можно преобразовать в абсолютный URL-адрес с помощью JavaScript, если это то, что решит проблему.И любые другие проблемные или даже невидимые символы могут быть удалены или заменены.

Можете ли вы опубликовать в Интернете веб-страницу , к которой мы можем обратиться, чтобы увидеть проблему на наших собственных копиях IE?Можете ли вы опубликовать HTML-файл, который мы можем скопировать на наш компьютер и просмотреть в браузере?Ваш комментарий к другому вопросу говорит мне, что у вас есть какой-то строгий XOCTML DOCTYPE.Если кто-то из нас может решить эту проблему с нашей стороны, он, скорее всего, будет исправлен.

3 голосов
/ 27 января 2011

Как я упоминал в своем комментарии, я не уверен на 100% в этом (как IE7 + 8 обрабатывает объект .location), но в конце концов это просто объект.

Попробуйте явно установить свойство href в объекте location:

window.location.href = href;
1 голос
/ 06 августа 2012

Хотя тема старая, она не устарела. У меня была такая же проблема.

window.location = href;

работает нормально, если после этого поставить другую команду.

window.location = href;
return false;

Это работает для меня и перенаправляет с правильным URL. Надеюсь, что это поможет другим с той же проблемой.

0 голосов
/ 27 января 2011

Не совсем прямой ответ на ваш вопрос, но у меня есть два предложения

  1. Вы можете просто попытаться узнать, подойдет ли вам jQuery

    $(this).children('a').first().click()
    

    Редактировать: Это не решило проблему

  2. Также вы можете просто сделать целое <div в тег <a с помощью style="display: block; text-decoration: none". Вы можете использовать цвета шрифта и подчеркивания, чтобы текст внутри выглядел так, как вы хотите. Также это решение не требует JavaScript. и это также делает целое отображение div сфокусированным, а не просто на a или вообще ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...