-1

我有这个功能的问题。我将解释 - 如果用户关闭浏览器,我必须执行函数。这个函数是用 JavaScript-saveCookieScriptPrefOnLogOut() 编写的。

我有这个解决方案(我使用 StackOverFlow 中的信息编写了这个):

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind('beforeunload', function(eventObject) {
var returnValue = undefined;
if (! inFormOrLink) {
    saveCookieScriptPrefOnLogOut();
}
saveCookieScriptPrefOnLogOut();
return true;
});

这个解决方案的问题是:每个浏览器都会显示带有问题“你真的要关闭吗?”的窗口。

我必须隐藏此信息/窗口。第二个问题(不太重要但仍然) - 当我单击链接或表单提交时,FF 和 IE 运行此功能。我需要忽略链接并提交表单。

解决方案必须是跨浏览器解决方案(Windows 上的 IE、Chrome、FF。最重要的是 IE)。我可以使用 PHP 和 javascript。

你能告诉我如何解决这些问题吗?

4

1 回答 1

1

尝试这个:

var inFormOrLink = false;

$('a').live('click', function() { inFormOrLink = true; });
$('form').live('submit', function() { inFormOrLink = true; });

$(window).bind('beforeunload', function() {
    if( !inFormOrLink ) {
        saveCookieScriptPrefOnLogOut();
    }
});

如果您undefined从事件处理程序返回(没有return语句隐式返回undefined),则不会出现对话框。此外,saveCookieScriptPrefOnLogOut无论inFormOrLink.

于 2012-10-25T10:23:23.597 回答