2012-05-01 225 views
3

我想创建一个按钮,它将运行先前运行的函数。即我点击buttonA来运行功能A然后点击按钮B来运行功能B我想有一个按钮,允许用户通过点击后退按钮返回到functionA。Jquery后退按钮。

我想我可以一个全局变量来保存先前的语句,但它不会工作,因为每个函数将运行会覆盖存储的语句。这里是一些psuodo代码样的解释我的意思

var globalvar; 
globalvar = functionA; 
function B { run globalvar}; 
+0

类似:如何检测浏览器后退按钮事件 - 跨浏览器](http://stackoverflow.com/q/25806608/55075)在SO – kenorb

回答

12

使用哈希超链接和hashchange事件。在jQuery的:

$(window).on('hashchange',function() { 
    var hash = location.hash.substring(1); // strip the leading # symbol 
    // now run code based on whatever the value of 'hash' is 
}); 

HTML:

<a href="#hash1">function A</a> 
<a href="#hash2">function B</a> 

现在,每当用户点击浏览器的“后退”按钮(或HTML按钮触发history.go(-1)),它会回到什么哈希以前选中并再次触发hashchange事件。

http://jsfiddle.net/mblase75/hL5FZ/

警告:旧的浏览器IE7一样或may not support hashchangehistory.go()

+0

[可能在这个问题中找到已有的历史插件](http://stackoverflow.com/questions/116446/what-is-the-best-back-button-jquery-plugin)。 – kapa

+1

@bažmegakapa是的,尽管如果不需要旧的浏览器支持,那些插件可能是矫枉过正的。我可能会使用[Modernizr](http://modernizr.com/)获得支持,并针对这些罕见的情况进行解决。 – Blazemonger

+0

当然,只是认为值得添加它作为评论。有时你只是不想重新发明轮子:)。 Upvoted btw。 – kapa

3

JQuery的方法,并应用类回链接,如:

$(document).ready(function(){ 
    $('a.back').click(function(){ 
    parent.history.back(); 
    return false; 
    }); 
});