2013-06-19 83 views
3

我有一個主頁有廣泛的jQuery ...基於點擊標籤等隱藏和顯示div。在顯示的div中有鏈接到其他頁面的回發和獲取新頁面。'後退按鈕'恢復到以前的頁面狀態?

現在,我希望頁面上的「返回」按鈕在用戶點擊該按鈕時返回到頁面的前一狀態。因此,如果他們點擊鏈接時顯示Sell_your_books div和'Sell_your_books選項卡',我想要一個後退按鈕進入主頁,顯示Sell_your_books div並選擇'Sell_your_books選項卡'。

我知道,我將不得不解析(POST)一個變量到主頁來實現這個與PHP,但我不確定實現它的正確方法。

感謝

回答

2

使用哈希超鏈接和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事件。

MORE DETAILS

+0

謝謝,這是更容易的快速修復方法。瀏覽器默認滾動,直到找到div,我該如何阻止它? – surfer190

0

創建一個隱藏的輸入字段,並填寫這一項與CURREN t活動標籤。

<form> 
.. 
<input type="hidden" name="currentTab" value="" /> 

</form> 

的jQuery位設置權值:

$(YOUR TAB SELECTOR).on('click', function() { 
$('input[name=currentTab]').val($(this).attr('id')); 
}); 

在PHP腳本它處理你的數據,你可以創建這樣一個反向鏈接:

<?php 

if(isset($_POST['currentTabe']) && $_POST['currentTab'] != '') { 
    $backLink = "your_page.php?tab=" . $_POST['currentTab']; 
} 

?> 

如果您現在使用標籤通過反向鏈接調用您的站點,則可以創建一個額外的document.ready事件,該事件是PHP $ _GET Parm的活動選項卡。

<script type="text/javascript"> 
<?php 
    if(isset($_GET['tab']) && $_GET['tab'] != '') { 
?> 
    jQuery(document).ready(function() { 

    var tab = $('#'+ <?=htmlspcialchars($_GET['tab'])?>); 
    if(tab.length <= 0) return false; //element not found 

    //active tab 
    tab.toggle('click'); //click or do something else to activate the current tab 

    }); 
<?php 
    } 
?> 
</script> 

注意:謹防 XSS(跨站腳本),所以請檢查您的$ _ POST和正確值$ _GET。