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