'后退按钮'恢复到以前的页面状态?

时间:2013-06-19 09:49:33

标签: php javascript jquery

我有一个包含大量jQuery的主页...根据标签的点击等隐藏和显示div。在显示的div中有链接到其他页面回发并获取新页面。

现在,我希望页面上的“后退”按钮可以在用户点击页面时返回到页面的上一个状态。因此,如果他们点击链接时显示Sell_your_books div和'Sell_your_books标签',我希望有一个后退按钮进入主页,显示Sell_your_books div和'Sell_your_books标签'

我知道我必须将一个变量解析(POST)到主页以实现这一点,但是我不确定实现它的正确方法。

由于

2 个答案:

答案 0 :(得分: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>

现在,只要用户点击浏览器的“后退”按钮(或触发history.go(-1))的HTML按钮,它就会返回之前选择的任何哈希值并再次触发哈希转换事件。

MORE DETAILS

答案 1 :(得分:0)

创建一个隐藏的输入字段,并使用当前活动选项卡填充此字段。

<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是否正确值。