2011-08-18 51 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

你可能想在服務器端做類似的事情。跟蹤頁面上的數據狀態通常是在服務器端完成的,因此可以將邏輯放在界面之外。使未來的維護更容易。

相關問題