使用file:// protocol时,我可以让history.back()函数在Chrome中运行吗?

时间:2012-02-24 00:04:10

标签: javascript google-chrome local-files

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

答案 0 :(得分:22)

由于某些原因,在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;
}

答案 1 :(得分: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>

答案 2 :(得分:0)

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

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

只有这段代码可以使用..

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

答案 3 :(得分:0)

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

使用此功能

答案 4 :(得分:-1)

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

<script>
alert("Success!");
window.history.go(-1);
window.close();
</script>