2012-05-01 4 views
3

Я хочу создать кнопку, которая будет запускать ранее запущенную функцию. т.е. я нажимаю кнопку «А» для запуска функции «А», затем нажмите кнопку «В» для запуска функции «Б». Я хочу, чтобы кнопка, которая позволяет пользователю вернуться к функции А, нажав кнопку «Назад».Jquery Back Button.

Я думал, что могу глобальную переменную удерживать предыдущие операторы, но она не будет работать, поскольку каждая выполняемая функция перезаписывает хранимые инструкции. вот некоторые psuodo код рода объяснить, что я имею в виду

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

Похожие: [Как обнаружить Browser Назад событие Button - Cross Browser] (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 hashchange или history.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

Конечно, просто подумал, что стоит добавить его в качестве комментария. Иногда вы просто не хотите изобретать колесо :). Продвинутый кстати. – kapa

3

метод JQuery и применить класс обратно к ссылке, например:

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