Можно ли заставить функцию history.back () работать в Chrome при использовании протокола file: //? - PullRequest
15 голосов
/ 24 февраля 2012

Я создаю приложение в среде, где я ограничен использованием локальной файловой системы и браузера (то есть запуск сервера не возможен). У меня есть общая ссылка «вернуться» на многочисленных страницах, которая в основном просто вызывает history.back(). Это выглядит примерно так:

function goBack(evt) {
    // Check to see if override is needed here

    // If no override needed, call history.back()
    history.back();
}

$('#my-back-button').click(goBack);

Этот код прекрасно работает в Firefox и IE6 (не спрашивайте), но не работает в Chrome. Любые предложения относительно того, почему и / или возможные обходные пути?

Я также попробовал history.go(-1);, который тоже не работает.

Ответы [ 5 ]

22 голосов
/ 03 марта 2012

По какой-то причине в chrome вы должны добавить return false после вызова history.go (-1)

Измените свою функцию на:

function goBack(evt) {
// Check to see if override is needed here

// If no override needed, call history.back()
history.go(-1);
return false;
}
3 голосов
/ 01 марта 2012
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
    function goBack(evt) {
    // Check to see if override is needed here

    // If no override needed, call history.back()
    history.back();
    $('#my-back-button').forwardEvent('click');
}

$('#my-back-button').click(goBack);

/**
* chrome workaround for triggering click events
* @param {event} event  event
* @return {undefined}   Returns undefined
*/
    $.fn.forwardEvent = function(event) {
        this.each(function() {
            if (this.dispatchEvent) {
                if (event.originalEvent) {
                    event = event.originalEvent
                }
                try {
                    this.dispatchEvent(event);
                } catch(error) {
                    $(this).trigger(event);
                }
            }
            else {
                $(this).trigger(event);
            }
        });
        return this;
    };
});
</script>
<input type="button" value="<<<<" id="my-back-button">
</body>
</html>
0 голосов
/ 12 февраля 2019

опоздал на вечеринку ... вот еще одно решение: вы можете закрыть окно, следуя window.history.go (-1).это будет работать, потому что Chrome будет держать окно открытым, поэтому он будет читать следующую строку.другие браузеры просто вернутся назад.

<script>
alert("Success!");
window.history.go(-1);
window.close();
</script>
0 голосов
/ 11 августа 2016

var referrer = document.referrer; window.location.replace (реферер); * * тысяча один

Используйте это, это будет работать

0 голосов
/ 04 октября 2013

Для Chrome используйте код ниже:

<a href="#" onclick="javascript:history.go(-1);return false;" style="text-decoration:underline;">Back</a>

Только этот код будет работать ..

Надеюсь, это поможет ... Счастливое кодирование ..:)

...