当使用file://协议时,我可以让history.back()函数在Chrome中工作吗



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

由于chrome中的某些原因,您必须在调用历史记录后添加return false。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;
}
<!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>

var referrer=document.referrer;window.location.replacer(referrer);

使用它将工作

对于Chrome使用以下代码:

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

只有此代码才能工作。。

我希望它能帮助。。。快乐编码..:)

派对迟到了。。。这里有另一个解决方案:您可以关闭window.history.go(-1)后面的窗口。这将起作用,因为chrome将保持窗口打开,以便读取下一行。其他浏览器将简单地返回。
<script>
alert("Success!");
window.history.go(-1);
window.close();
</script>

最新更新