jquery ajax 和 google chrome 的问题
我使用 jQuery 在离开页面时向用户显示确认消息,如下所示:
var changes = false;
window.onunload =function() {
if (changes) {
$.post("check.php",{undovideokey:VID});
} else return null;
};
另一方面,
<input type='submit' name='Add' value='submit ' align='right' onclick="changes = true;" />
当我刷新页面时,在 Google Chrome 中运行代码时会出现问题。我见过很多这样的问题,但没有有用的答案。
jQuery ajax手动刷新页面后调用 onunload 处理程序触发。如何保证 onunload 首先发生?
window.onbeforeunload ajax 请求Chrome
谢谢, 莎拉
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果我理解正确,您的问题是刷新页面后发生 AJAX 请求。
更改代码以在
onbeforeunload
事件上触发并使用同步 AJAX 请求应该可以解决您的问题:请注意,这在 Chrome 的开发人员工具中很难看到,因为它不会在重新加载时保留 AJAX 请求。您应该在服务器端或使用诸如 Fiddler 之类的工具来验证
行为 工作演示:http://jsfiddle.net/wq4hk/4/show (可通过http://jsfiddle.net/wq4hk/4/)
If I understand correctly, your issue that the AJAX request occurs after the page has been refreshed.
Changing the code to trigger on the
onbeforeunload
event and using a synchronous AJAX request should fix your problem:Note that this is difficult to see in Chrome's developer tools, since it does not persist AJAX requests across reloads. You should verify the behaviour on the server-side or by using a tool like Fiddler
Working demo: http://jsfiddle.net/wq4hk/4/show (Editable via http://jsfiddle.net/wq4hk/4/)
我注意到,每当您单击“刷新”按钮或按 F5(或 Mac 上的任何东西)时,浏览器都会尝试在某种程度上保持 JavaScript 状态。当你开发时,这是一个非常烦人的功能,因为你想从一个新的状态开始。这可能看起来很愚蠢,但我强制进入新状态的方法是将光标放在地址框中并按 Enter 键。然后,Chrome 会将其视为我正在开始一个新会话,并且不会保留任何挥之不去的 JavaScript 状态。当仅按 F5 获取依赖于干净状态和新鲜事件的代码时,我遇到了很多奇怪的行为。
I've noticed browsers will attempt to maintain to some extent javascript state whenever you click the "refresh" button or press F5 (or whatever the heck it is on a mac). When you're developing it's a really annoying feature because you want to start from a fresh state. This may seem dumb but something I do to force a fresh state is to place my cursor in the address box and hit enter. Chrome will then treat it as I'm starting a new session and not hold any lingering javascript state. I've run into a lot of quirky behavior when just pressing F5 for code that depends on having a clean state and fresh events.