繁体   English   中英

离开页面时执行的 javascript - 更新遗留代码

[英]javascript that executes when leaving page - updating legacy code

只是一点背景知识 - 我正在更新一个旧功能,即所有 javascript,因为我们的 web 应用程序中添加了新功能,旧功能必须与之交互。

在测试此更新时,我们注意到在 web 应用程序中从一个页面移动到另一个页面时出现问题 - 如果已激活旧功能,它应该会跟随您。 基本上,激活功能的数据没有被保留。 那里有一些代码应该这样做。 经过一番调查,发现它在 IE/Edge 和 Firefox 中按预期工作,但退出代码未在 Google Chrome 和 Safari 中执行。 这或许可以解释为什么企业没有意识到这个问题,但已经确认该问题也存在于实时站点中,因此最近没有引入,因为我相信大多数用户都会使用 IE。

管理退出功能的代码如下:

    if(window.onpagehide || window.onpagehide === null){
        window.addEventListener("pagehide", storeDataFunction, false);
    } else {
        window.addEventListener("unload", storeDataFunction, false);
    }

使用上面的代码,当您尝试离开页面时,storeDataFunction 中的逻辑甚至不会执行。

在浏览了此处和其他论坛后,我已将上述内容更新为:

window.onbeforeunload = storeDataFunction;

并使 storeDataFunction 返回 null。

这似乎稍微好一点,因为在移动页面时正在执行 storeDataFunction,但在其中深处有一个 ajax POST 到 controller 在我们的 Z2567A5EC9705EB7AC2C984033E0618 中的 controller这个 ajax 请求没有得到执行。 同样,这仅适用于 Chrome 和 Safari,并且在 IE 和 Firefox 上运行良好。

所以我正在寻找的是一个引导。 为了我们想要在这里实现的目标,我是否使用onbeforeunload走错了路? 还是原来使用 pagehide/unload 更合适? 这两个都不正确吗?有更好的方法吗? 这个功能是在大约 7 年前开发的,所以我什至不确定它是否曾经在 Chrome 上工作过,或者它是否在开发时工作过,并且 Chrome 中的一些最新更新改变了它们处理页面终止的方式。

提前致谢。

看起来谷歌已经更新了 Chrome 以在页面关闭期间停止 XHR。

https://www.chromestatus.com/feature/4664843055398912

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM