Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果用户关闭浏览器,则运行函数_Javascript - Fatal编程技术网

Javascript 如果用户关闭浏览器,则运行函数

Javascript 如果用户关闭浏览器,则运行函数,javascript,Javascript,我对这个函数有问题。我会解释: 若用户关闭浏览器,我必须执行此函数。此函数是用JavaScript-saveCookiesScriptPrefOnLogout()编写的 我有以下解决方案(我使用StackOverFlow的信息编写): 此解决方案的问题是:每个浏览器都会显示带有问题“是否确实要关闭”的窗口 我必须隐藏此信息/窗口。第二个问题(不太重要但仍然存在)-当我单击链接或表单提交时,FF和IE运行此功能。我需要忽略一个链接和表单提交 解决方案必须是交叉浏览器解决方案(即,windows上的

我对这个函数有问题。我会解释: 若用户关闭浏览器,我必须执行此函数。此函数是用JavaScript-saveCookiesScriptPrefOnLogout()编写的

我有以下解决方案(我使用StackOverFlow的信息编写):

此解决方案的问题是:每个浏览器都会显示带有问题“是否确实要关闭”的窗口

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

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

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

试试这个:

var inFormOrLink = false;

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

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

如果从事件处理程序返回
undefined
(no
return
语句隐式返回
undefined
),则不会出现对话框。。另外,您调用了
saveCookiesScriptPreFonLogout
,而不考虑
inFormOrLink

为什么需要依赖用户关闭浏览器?页面加载完毕后,为什么不能编写cookie?在无状态环境(如网页)中,这是一种错误的开发方法。下面是一个类似的问题:
var inFormOrLink = false;

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

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