2013-06-19 47 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。