相关疑难解决方法(0)

在浏览器中检测后退按钮

我必须检测用户是否点击了后退按钮.为此,我正在使用

window.onbeforeunload = function (e) {
}
Run Code Online (Sandbox Code Playgroud)

如果用户单击后退按钮,它可以工作.但是,如果用户单击F5或重新加载浏览器按钮,也会触发此事件.我该如何解决?

javascript jquery

73
推荐指数
5
解决办法
28万
查看次数

JQuery&history.js后退按钮不起作用

我正在使用history.JS(最新)与Jquery(最新)加载和替换网站的一部分,这一切都在工作,目前我只是想让它在现代浏览器中工作,所以我不是在摆弄哈希变化.

一切似乎都有效,但是当我点击浏览器上的后退按钮(最新的FF和Chrome)时,页面不会改变(尽管网址和标题确实发生了变化).我有一个谷歌,看看这里,但我看不到发生了什么.

查看堆栈溢出我找到了这个页面:单击带有History.js的后退按钮时恢复内容似乎问了类似的问题.我已经将#left_col(这是被替换的div)的加载内容添加到状态数据中,但我不确定从那里开始,我知道我需要在状态发生变化时重新加载该数据,但我看不出怎么样.

var History = window.History; 
var origTitle = document.title;
if ( !History.enabled ) {
    return false;
}

History.Adapter.bind(window,'statechange',function(){ 
    var State = History.getState();     
    History.log(State.data, State.title, State.url);
});

$('.ajaxload').live("click", function() {
    History.pushState({state:1,leftcol:$('#left_col').html()}, origTitle, $(this).attr("href"));
    $('#left_col').load($(this).attr("rel"));
    return false;
});
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何帮助!

更新:

我设法让用户点击返回更改页面,但它没有加载正确的状态(它似乎返回两个状态而不是一个),我在上面的代码中添加的代码是:

window.addEventListener('popstate', function(event) {
    var State = History.getState(); 
    $('#left_col').html(State.data.leftcol);
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery history.js

15
推荐指数
1
解决办法
2万
查看次数

有没有办法告诉国家与history.js的方向?

就像标题所说,onstatechange如果pushState函数被调用,我希望能够执行不同的事件,而不是back函数.或者,如果go功能为负或正.

例:

如果History.pushState()或被History.go(1)调用,我想要statechange事件的回调forwardPushState

如果History.back()或被History.go(-1)调用,我想要statechange事件的回调backwardsPushState

javascript javascript-events browser-history history.js html5-history

8
推荐指数
1
解决办法
1825
查看次数