2011-11-01 36 views
4

我是jquery的初學者,並試圖去適應它。是否有任何事件可以綁定到頁面來停止我的滑塊計時器?頁面更改時是否有jQuery事件?

我想要做的是,當用戶更改頁面或轉到另一個選項卡時,我想捕獲該事件。有沒有這個系統的事件或監聽器?

回答

1

看一看這樣的:http://api.jquery.com/unload/

+0

感謝薩姆,但它不是觸發,因爲它說。我的意思是我試圖改變頁面,使用後退和前進按鈕。但它並沒有觸發你提供的鏈接上的樣本。我是否需要添加更多代碼? – zbgokalp

+1

如果您在查看這些事件時遇到問題,那是因爲它們會觸發,然後控制檯清除以顯示新的頁面。大多數控制檯(firebug和webkit)都有一個選項,可以在頁面卸載後不清除舊日誌。你需要使用這些設置。 –

+1

Chrome和Safari等現代Webkit瀏覽器不支持此卸載方法。 – Exception

2

我會去與onbeforeunload代替unload爲了給你最大的一次。但是,如果您計劃在此時向服務器發送請求(或者異步執行任何操作),則可能會發現自己處於競爭狀態,有時請求會通過該請求,有時不會。

發生這種情況是因爲頁面在卸載時停止處理您的請求(或其他異步操作)。這在現代瀏覽器中幾乎可以立即使用,而在較早的IE中則相當快。正因爲如此,在unloadbeforeunload事件中的任何事情上做某事都很有意義。

如果您嘗試將計時器信息傳遞給下一個網址,那麼您可能只需點擊它們就可以修改網址。

$('a').click(function(){ this.href=this.href + "#timer=" + timerVar; }); 

然後當你到下一個頁面,你可以閱讀從URL中的最後一個值。

谷歌分析加入延遲到各個環節解決了這個問題:

$('a').click(function(){ 
    var that = this; 
    setTimeout(function(){ 
    window.location=that.href; 
    },100); 
    return false; 
}); 

這只是給你的頁面額外的時間來跟蹤鏈接。雖然這並非萬無一失,但對谷歌來說並不重要,因爲分析有些短暫(並且它們還將url params用於其他更重要的事情(例如廣告系列))。

+0

感謝您的回答。但我想你讓我錯了。我通過jQuery製作了一個簡單的滑塊。它有一個計時器。我想要做的是,停止計時器,如果用戶轉到另一個選項卡,另一個站點或轉到其他瀏覽器。我想捕捉像許多OOP這樣的事件,讓你通過「專注於」或「專注」來控制這些事件。但是當我閱讀jQuery文檔時,他們將焦點用於不是整個頁面本身的元素。也許我錯了。就像我說的我是jQuery的初學者。 – zbgokalp

+0

我的答案解決了如何停止計時器,然後將信息發送到您網站上的下一頁。然後,您可以在新頁面加載時繼續處理該事件。 –

+1

據我瞭解(糾正我,如果我錯了)此代碼發送當前時間「我的」其他頁面。但是我想要做的是在用戶「關注」其他事情時捕捉事件。一些其他網站一些其他瀏覽器,本地文件任何東西..只是當用戶「關注」我的網頁。也非常感謝你給予答案,並試圖幫助 – zbgokalp

相關問題