Кнопка «Назад» в браузере позволяет перейти на предпоследнюю страницу. Почему?

После добавления этого короткого кода js:

$(document).ready(function() {
    //check to see if it's an external link and if so do the splashpage
    $('a').click(function() {
        var $this = $(this);

        //get the redirect url
        var redirect_url = $this.attr('href');
        var string_url = String(redirect_url);
        if (string_url.indexOf("http") !== -1) {


            $('#external_link_modal').modal({
                overlayClose: true,
                overlayCss: {
                    backgroundColor: "#ebebeb"
                }
            });


            setTimeout(function() {
                window.location.replace(string_url);
            }, 2500);
            return false;
        }

    });
});

Когда кто-то нажимает на ссылку (скажем, на странице A), появляется предупреждение, а через некоторое время перенаправляет пользователя на новый URL-адрес (скажем, на страницу B).

Однако, когда кто-то нажимает кнопку "Назад" в браузере на странице Б, вместо того, чтобы направить пользователя на страницу А, как предполагалось, он фактически перенаправляет его на страницу, которую он просматривал до страницы А.

Это действительно странно. Кто-нибудь знает, почему?

Заранее спасибо!


person MonkeyBoo    schedule 06.12.2010    source источник
comment
Здесь нет эксперта по JS, но это проблема с использованием индексных и неиндексных значений?   -  person Aaron McIver    schedule 07.12.2010


Ответы (2)


window.location.replace(string_url) заменяет текущую запись истории на string_url. Вместо этого вы должны установить window.location.href:

window.location.href = string_url;
person Lekensteyn    schedule 06.12.2010
comment
Спасибо. Это работает, и оцените объяснение поведения кнопки «Назад» в браузере. - person MonkeyBoo; 07.12.2010

Я не проверял это, но попробуйте заменить:

window.location.replace(string_url)

с:

window.location.href=string_url

Дайте мне знать, если это решит проблему или если она демонстрирует такое же поведение.

person Colin O'Dell    schedule 06.12.2010