2011-08-18 68 views
0

我是新来的Javascript和JQuery。在搜索互联网寻找解决方案后,我决定发布这个问题。如何跟踪页面重新加载后按下了哪些按钮?

问题:当用户点击iframe中的链接时,它会更新父级上的进度条,只会触发一次。但是,当用户转到另一个页面并返回时,iframe中的页面将被重新加载,javascript也是如此,这意味着可以为该按钮重新更新进度条,这是我不想要的。在重新加载和禁用该功能后,是否有任何方法可以跟踪哪些元素被点击? URL参数?

HTML中的iframe:

<div id="sidenav"> 
    <ul> 
     <li><a href="../right/section1/page1.html" target="presentation" class="active" name="position">positioning</a></li> 
     <li><a href="../right/section1/page2.html" target="presentation">comparisons</a></li> 
    </ul> 
</div> 

的Javascript中的iframe页面:

$('#sidenav ul li a').one('click', window.parent.updateBar); 
+0

设置一个包含按钮状态的cookie。这是在多个页面之间持久保存数据的唯一方式(直到html5本地存储变得足够普及,您可以认为它始终存在)。 –

+0

@Marc B,谢谢你的建议。这个项目目前只处理webkit浏览器,所以在看了HTML5 localStorage之后,我认为这个建议可能是一条可行的路。 – lislis

回答

0

喜欢的东西localStorage。唯一的缺点是即使在重新启动之后它仍然是持久的,但是如果您的完整网站被重新加载,您可以重置该值。它也不支持IE7及更低版本。

function updateBar() { 
    if(localStorage['pressed'] == 'true') return; // abort if already pressed 

    // do things 

    localStorage['pressed'] = 'true'; // save the data that it is pressed 
} 
+0

现在是localStorage的HTML5功能?对于我正在处理的这个项目,实际上只处理webkit浏览器,并且使用了很多新的CSS3,HTML5特性。 – lislis

+0

@leetou:是的,很棒。 – pimvdb

+0

感谢您的建议,特别是在项目专门处理webkit浏览器时,这种方法效果很好。只有一个问题,因为你有'按',因为有几个按钮,每个按钮都有它自己的触发器? – lislis

2

无论你想在客户端,你基本上有相同的选择上记录:

  • 饼干
  • 客户端存储
  • URL哈希

或:

  • 往返于服务器和数据存储在结果页面
0

你可能想在服务器端做类似的事情。跟踪页面上的数据状态通常是在服务器端完成的,因此可以将逻辑放在界面之外。使未来的维护更容易。

相关问题