我有以下代码替代方案,但都不满意。我正在使用 jQuery 1.7.2
第一个在 Firefox 中是完美的,但在 IE9 中它会发布但没有完成写入数据库的操作。我试图按照其他人的建议将其设置为 ASYNC false,但奇怪的是,这似乎没有任何区别。它可能也无法在其他浏览器中工作。
第二个确实完成,但弹出一个确认关闭页面对话框。我已经看到了有关如何阻止这种情况的建议,但我无法达到相同的结果。
有人可以给我提供替代方案吗?或者给我正确的 ASYNC 错误代码,该代码适用于 IE9 和第一个?或者告诉我如何正确防止确认关闭?
// Sends the post but does not complete the post in IE9
jQuery(window).unload(function() {
jQuery.post(
MyAjax.ajaxurl, etc
// works in IE 9 but throws up a confirm dialog box
jQuery(window).bind("beforeunload", function() { ...
jQuery.post(
MyAjax.ajaxurl, etc
最佳答案
只是不要每次触发 jQuery(window).scroll 时都发布。仅当用户停止滚动时发布。像这样:
function sendQuery() {
console.log('scrolled');
}
var scrollTimeout = null;
$(window).bind('scroll', function() {
if (window.scrollTimeout) {
clearTimeout(window.scrollTimeout);
}
window.scrollTimeout = setTimeout(sendQuery, 200);
})
还有一个活生生的例子 - http://jsfiddle.net/AJnk4/
关于jquery卸载/绑定(bind)可靠的跨浏览器解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11238190/