6

由于我精心修改了一些代码,我的网站运行得更快了,但如果浏览器的后退/前进按钮能正常工作,我会很高兴。现在,使用下面的代码,浏览器地址栏永远不会改变。当有人单击“返回”时,它会将他们从应用程序中取出。

是否有任何简单的方法来改变它,以便浏览器的后退/前进按钮起作用?或者,如果有人能指出我正确的方向。谢谢你的帮助。

$(document).on("ready", function () {

    //I want to load content into the '.page-content' class, with ajax

    var ajax_loaded = (function (response) {

        $(".page-content")

        .html($(response).filter(".page-content"));

        $(".page-content .ajax").on("click", ajax_load);


    });



    //the function below is called by links that are described 
    //with the class 'ajax', or are in the div 'menu' 

    var history = [];

    var ajax_load = (function (e) {

        e.preventDefault();


        history.push(this);
        var url = $(this).attr("href");
        var method = $(this).attr("data-method");


        $.ajax({
            url: url,
            type: method,
            success: ajax_loaded
        });

    });


    //monitor for clicks from menu div, or with
    //the ajax class
    //why the trigger?

    $("#menu a").on("click", ajax_load);
    $(".ajax").on("click", ajax_load);
    $("#menu a.main").trigger("click");



});
4

3 回答 3

1

您可以使用 jquery 地址插件 ( http://www.asual.com/jquery/address/ )。它有一个事件可以检测用户何时按下后退/前进按钮。

$.address.externalChange(function() { console.log('back/forward pressed'); });

据我所知,没有办法区分前后。

于 2013-05-18T08:27:28.057 回答
1

这是一种检测您所问内容的方法。

忍受我使用后退和前进按钮是一项冒险的任务。

window.onload = function () {

    if (typeof history.pushState === "function") {

        history.pushState("someState", null, null);

        window.onpopstate = function () {

            history.pushState("newState", null, null);

            // Handle the back (or forward) buttons here
            // Will not handle refresh, use onbeforeunload for this.
        };
    }
}
于 2013-05-17T23:36:55.253 回答
0

你绝对应该检查History.js 下面是一些示例代码:-

  (function(window,undefined){

    // Prepare
    var History = window.History; // Note: We are using a capital H instead of a lower h
    if ( !History.enabled ) {
         // History.js is disabled for this browser.
         // This is because we can optionally choose to support HTML4 browsers or not.
        return false;
    }

    // Bind to StateChange Event
    History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
      var State = History.getState(); // Note: We are using History.getState() instead of event.state
      //History.log(State.data, State.title, State.url);
      var goto_url = State.url;            
      $.ajax({
          url: goto_url,
          dataType: "script"
      });
    });
  })(window);
于 2013-05-17T23:45:53.190 回答