2010-12-22 210 views
0

我一直在努力解決how to close session when browser/tab is closed。繼丹尼爾梅洛的回答+設置會議的coockie TTL爲0,我差不多已經準備好了,但丹尼爾的提示是對於輸入類型= [按鈕]不起作用。關閉瀏覽器/選項卡上的會話關閉

var validNavigation = false; 

function endSession() { 
    document.cookie = 'MYOWNSESSID=; path=/'; 
} 

function okEvent(){ 
    validNavigation = true; 
    } 

function wireUpEvents() { 

    window.onbeforeunload = function() { 
     if (!validNavigation) { 
     endSession(); 
     } 
    } 

    $("a").bind("click", okEvent); 

    $("form").bind("submit", okEvent); 

    // that's my adds that don't work 
    $(":button").bind("click", okEvent); 
    $(":button").bind("submit", okEvent); 
    $(":button").onclick= okEvent; 
} 


// Wire up the events as soon as the DOM tree is ready 
$(document).ready(function() { 
    wireUpEvents(); 
}); 

在卸載發生前如果將事件標記爲有效的關鍵。我試圖鉤住按鈕,但沒有成功。 jquery選擇器工作正常,我檢查$(':button')。長度是> 0. 當然,我失去了一些東西,但無法找到它。

+0

您的代碼沒有錯......實際上,您不需要添加,因爲您在表單上的提交事件中調用了「okEvent」函數。無論如何,你是否可以在okEvent中加入並警示以檢查它是否實際設置了標誌? – ifaour 2010-12-22 20:49:28

+0

謝謝ifaour。你所追求的就是我所做的。我在okevent()上放了一個提示,所以我知道它何時被調用,除了輸入類型[按鈕]之外,它工作正常。 – 2010-12-23 15:25:42

回答

2

好了,這裏有一些提示:

-replace你已經添加了三條線:

$(':button').click(okEvent); 

- 不要綁定上的按鈕輸入提交事件,不要混淆與提交輸入(more):

<input type="submit" value="Submit" /> 

- 如果你正在使用的按鈕提交表單,然後使用提交輸入代替,並刪除所有你添加自提交事件已經是附表格:

$("form").bind("submit", okEvent); 

請檢查this測試以更好地瞭解按鈕輸入。

相關問題