Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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_Jquery - Fatal编程技术网

在窗口关闭时运行JavaScript代码,但不在页面刷新时运行?

在窗口关闭时运行JavaScript代码,但不在页面刷新时运行?,javascript,jquery,Javascript,Jquery,嗨,我想在使用Javascript关闭浏览器选项卡时触发函数或事件 但不是页面刷新 这是小提琴: 脚本 var popit = true; window.onbeforeunload = function() { if(popit == true) { popit = false; return "Are you sure you want to leave?"; } } 在小提琴中它的发生,但在页面刷新也。

嗨,我想在使用Javascript关闭浏览器选项卡时触发函数或事件 但不是页面刷新

这是小提琴:

脚本

     var popit = true;
 window.onbeforeunload = function() { 
      if(popit == true) {
           popit = false;
           return "Are you sure you want to leave?"; 
      }
 }

在小提琴中它的发生,但在页面刷新也。有人能帮我解决这个问题吗。

在刷新和页面关闭事件发生之前,您无法区分它们之间的区别。但是,您可以测试页面是否在事件发生后被刷新

要检查页面是否已刷新,可以在sessionStorage中设置一个变量。sessionStorage中的数据将保留到页面关闭,并在刷新和重新加载之间保留


在页面加载时,您可以检查此变量,如果它存在,页面已刷新,如果不存在,则页面已正常访问(新会话)。在此之后,您应该设置变量,以便可以检测后续刷新。

以下是我解决此问题的人

我需要知道浏览器何时真正关闭而没有刷新,因为我们的网站是在“会话”上工作的。客户一次只能打开这么多他们付费的会话。存储站点已打开的计算机的计算机名允许我对使用该站点的单独计算机进行计数

所以,我设置了和加载和卸载功能。当用户离开页面时,它会删除告诉我有人离开某个视图的数据,但由于下一个视图也使用相同的主布局,它会立即将计算机名重新加载回数据中

不知道关闭时需要做什么,只是不刷新页面,这可能是一个解决方案

我的所有视图都在主布局上运行。在主布局页面中,我有以下脚本

  window.onload = function () {
        debugger;
        var url = '@Url.Action(ACStrings.OpeningBrowser, ACStrings.HomeController)';
        var link = url;
        var args = {
        }
        $.ajax({
            type: "POST",
            url: link,
            data: args,
            success: function (response) {
            }
        });
    } 


    window.onbeforeunload = function () {
        debugger;
        var url = '@Url.Action(ACStrings.ClosingBrowser, ACStrings.HomeController)';
        var link = url;
        var args = {
        }
        $.ajax({
            type: "POST",
            url: link,
            data: args,
            success: function (response) {
                return false;
            }
        });
    } 

当关闭触发时,我可以做我需要做的事情,并在页面加载时重做任何需要设置的事情(如在浏览器中只是更改视图)

刷新卸载/加载页面-不确定您是否可以检测到差异手动或编程刷新页面?如果以编程方式,您可以找到一个解决方法,否则,这对检测页面卸载是否是由于刷新造成的没有什么帮助?不会的,我在您发表评论之前就意识到了这一点。然而,我认为我应该把答案留在这里,因为这是提问者可能得到的最接近解决方案。