编辑3:这个jsFiddle适用于插件,我几乎拥有它.
编辑2:我做了一个小提琴.我无法让插件在那里工作,但也许它更容易分析.
在我正在构建的网页中,通过Ajax加载文章(帖子)和新页面.在加载新的Ajax内容的同时,地址栏会发生变化(使用jQuery Address插件).
所以正常的导航会像这样:
//page2/page3/article7/page3/page4
请注意,在此导航中,没有按下任何浏览器按钮,退出文章7时,网站返回到其先前的URL,在这种情况下是page3.
当用户按下后退或前进按钮时,插件不会检测到.我设法找出了一种方法来了解用户何时按下后退或前进按钮:
每次添加新内容并更改地址时,我都会将新地址存储在一个数组中.如果用户按下后退或前进按钮,我会这样分析:
if(new_url == penultimate_value_in_array)=>按下后退按钮(从数组中删除最后一个值)
else =>按下前进按钮(向数组添加新值)
这适用于这种导航:
//page2/page3/page4
在我的情况下,它适用于后退按钮.但是,如果用户从/ article7按下Forward到/ page3,该函数会将其读作Back.这是一个了解我的意思的例子:
用户在/ page4并按Back - > new_page =/page3等于penultimate_page_in_array(/ page3)=> BACK
//page2/page3/article7/page3/page4
用户在/ page3并按Back - > new_page =/article7等于penultimate_page_in_array(/ article7)=> BACK
//page2/page3/article7/page3
user在/ article7中并按Back - > new_page =/page3等于penultimate_page_in_array(/ page3)=> BACK
//page2/page3/article7
用户在/ page3中按Back - > new_page =/page2等于penultimate_page_in_array(/ page2)=>返回
//page2/page3
user在/ page2中并按下Forward - > new_page =/page3,它不等于penultimate_page_in_array(/)=> FORWARD
/ /第2页
user在/ page3中并按下Forward - > new_page …