2010-12-22 169 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测试以更好地了解按钮输入。

相关问题