2012-03-22 64 views
0

短的問題:jquery地址插件:如何避免歷史更改?

我試圖做的是在一個給定的頁面(使用標籤)的後退按鈕不改變頁面URL(歷史)。這是,我需要當用戶按後退按鈕選項卡更改,但不顯示的URL。我如何使用Address插件來做到這一點?

長的問題:

除了上面的解釋,我不得不說我使用的地址插件這樣的:

$.address.strict(false); 
$.address.externalChange(function(e) { 
    changePageFunction(e.value); 
}); 

這裏面changePageFunction()我」 m設置爲$.address.title(the_title);$.address.value(the_value);。我已經試過是通過這樣的直接調用更改爲changePageFunction()

$.address.externalChange(function(e) { 
    if (!isTabsPage) { 
     changePageFunction(e.value); 
    } else { 
     changeTab(); 
    } 
}); 

這工作,但顯示的改變URL(可追溯到每個按下後退按鈕一個位置)。

我不能:

  • 添加不同的URL到每個選項卡(如$。地址樣本)
  • 其他類似
  • 改變目前的尋呼系統(有點複雜)
  • 改變地址插件

的想法是,如果isTabsPage爲真,那麼changeTab()功能禾rk,如果沒有,目前的方法將工作($。地址歷史管理)

有沒有什麼方法可以凍結歷史?

回答

0

HTML5有一個本機歷史記錄對象來處理這個問題。您需要使用其pushState函數,因爲用戶在用戶向前/向後導航時更改選項卡並處理其popState事件。 @balupton here爲舊版瀏覽器提供了一個美妙的polyfill。

0

您無法控制瀏覽器後退按鈕。如果您首先設置哈希,瀏覽器將始終能夠使用後退按鈕更改哈希。你唯一的選擇是抓住散列並手動改變它,這將打破循環等你的後退按鈕功能。

這與jQuery沒什麼關係。所有的jQuery都會操作location.hash屬性。

http://www.ezineasp.net/post/Javascript-Location-Hash-with-Example.aspx

你爲什麼要這麼做?您的應用程序狀態應該反映在哈希中。

相關問題