jQuery-如果浏览器选项卡是焦点,那么执行AJAX-不工作
jQuery - If browser tab is focused, then do AJAX - Not working
我有一个代码,用于确定当前浏览器窗口或选项卡是否处于活动状态。如果它是活动的,标签的标题会显示"活动",如果不是,则会显示"模糊"
它运行良好。这是代码:
$(window).on("blur focus", function (e) {
var prevType = $(this).data("prevType");
if (prevType != e.type) { // reduce double fire issues
if (e.type == "blur") {
document.title = 'blurred';
} else if (e.type = "focus") {
document.title = 'focus';
}
}
$(this).data("prevType", e.type);
})
上面的代码运行良好。
现在,如果我在其中添加AJAX,它就不起作用了。
$(window).on("blur focus", function (e) {
var prevType = $(this).data("prevType");
if (prevType != e.type) { // reduce double fire issues
if (e.type == "blur") {
document.title = 'blurred';
} else if (e.type = "focus") {
var interval = function () {
$.ajax({
url: "<?php echo base_url('home/get') ?>",
cache: false,
success: function (html) {
$("#text").val(html);
document.title ='focus';
},
});
};
setInterval(interval, <?php echo $int ?>);
}
}
$(this).data("prevType", e.type);
})
如果它在焦点上,它会说是焦点。如果我失去焦点,它会在不到一秒钟的时间里显示"模糊",然后再次显示焦点。我不知道为什么。如果它不在焦点上,我想说模糊。添加AJAX代码并不能使其工作。
请帮忙。谢谢
您需要在blur
事件中使用clearTimeout()
。我的代码不断地轮询我的服务器以获取数据,但当我离开页面时,它会停止轮询。请看下面的实现。我在这里的应用程序中也做了类似的操作:
$(window).blur(function() {
clearTimeout(getJsonTmr);
clearTimeout(updatePreviewTmr);
}).focus(StartTimers);
function StartTimers () {
// Every half a second,
getJsonTmr = setInterval(function () {
$.get("/doodles/update?getJson&DoodleID=" + DoodleOptions.DoodleID, function (data) {
data = JSON.parse(data);
if (!DoodleOptions.isActive)
clearDoodleCanvas();
$.each(data, function (index) {
drawFromStream(data[index]);
});
});
}, 500);
updatePreviewTmr = setInterval(function () {
$.post("/doodles/update?updatePreview", {
"DoodleID": DoodleOptions.DoodleID,
"DoodlePreview": canvas.toDataURL()
});
}, 5000);
}
StartTimers();
您可以使用上面的代码作为参考并更改您的代码。
为您提供一个简单的参考实现
function timers() {
tmrAjax = setInterval(function () {
$.get(/* ... */);
}, 1000);
}
timers();
$(window).blur(function () {
clearInterval(tmrAjax);
}).focus(timers);
相关文章:
- 如何使用自定义标头跨域执行AJAX POST
- 执行ajax成功函数-jQUERY
- 未执行Ajax循环的Javascript之后的代码
- 如何使用get或post方法连接和执行ajax
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- 如何执行ajax响应返回的javascript函数
- 如何生成一个执行AJAX调用的函数
- Rails 4中不执行Ajax响应
- 通过 ajax 请求执行 ajax 请求
- 如何在执行 Ajax 请求大量数据库更新时实现进度条
- 从 Web Worker 执行 AJAX 请求是否可行
- 在页面加载时执行ajax调用时,ajaxStart不起作用
- 未执行Ajax隐藏表单提交验证
- 在不执行ajax请求的情况下,使用jQuery读取HTTP标头以检查404
- 按顺序执行ajax请求的动态编号
- Javascript未执行Ajax调用
- 在多次AJAX调用后暂停执行AJAX回调
- 如何执行Ajax GET请求以从rails获取数据并将其传递给javascript(谷歌地图)
- 禁用onclick函数,以便在执行ajax时停止调用相同的函数
- 执行 ajax 同步 POST 然后提交表单的正确方法