我需要实现一个功能,在关闭窗口之前检查已更改的内容,如果是,则显示预定义的警告消息。 我所做的只是按如下方式注册我的处理程序:
window.addEventListener("beforeunload", checkValueChanged, true);
在非常处理程序中,我发起同步请求(使用 jsf.ajax.request())来提交所有待处理数据并计算更改。
对于大多数情况,整个解决方案似乎运行良好,但是当请求需要更长时间(300毫秒?)时,浏览器会残忍地杀死脚本而不等待响应。
仅适用于 Chrome (在48.0.2564.116 m测试) - FF和IE等待请求完成。当我在Chrome中启用开发人员工具时,它还可以工作。 我怀疑这是一个基于onbeforeunload处理程序执行时间的固定超时的Chrome行为,旨在保护用户免受某些网站上的各种技巧和黑客攻击(特别是色情网站:)。
我的问题是:你有没有遇到过这样的情况?这个“功能”是否记录在Chrome文档中的某个地方,或者可能是它的错误?如果它的功能可以在本地重新配置或禁用吗?
我会很感激任何提示:)