16

我在受限于使用本地文件系统和浏览器的环境中构建应用程序(即不能选择运行服务器)。我在许多页面上有一个通用的“返回”链接,主要只是调用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);哪个也不起作用。

4

5 回答 5

25

出于某种原因,在 chrome 中,您必须在调用 history.go(-1) 后添加 return false

将您的功能更改为:

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

// If no override needed, call history.back()
history.go(-1);
return false;
}
于 2012-03-03T19:51:38.870 回答
3
<!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>
于 2012-02-29T21:21:18.123 回答
1

var referrer = document.referrer; window.location.replace(推荐人);

使用它会起作用

于 2016-08-10T23:47:56.383 回答
0

对于 Chrome,请使用以下代码:

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

只有这段代码可以工作..

我希望它会有所帮助......快乐的编码...... :)

于 2013-10-04T05:24:23.487 回答
-1

派对迟到了......这是另一个解决方案:您可以在 window.history.go(-1) 之后关闭窗口。这将起作用,因为 chrome 将使窗口保持打开状态,因此它将读取下一行。其他浏览器将简单地返回。

<script>
alert("Success!");
window.history.go(-1);
window.close();
</script>
于 2019-02-12T14:58:59.287 回答