我正在开发一个Chrome扩展程序,它包含一个弹出窗口,当您点击该扩展图标时会出现。在弹出窗口上,我有一个按钮,一旦点击,就会在当前打开的选项卡页上显示加载框。
截图:
使用setTimeout函数,加载框会在一段时间后被移除。然而,这仅在弹出窗口本身可见时起作用。如果我在弹出窗口上点击按钮,然后转到其他选项卡并返回或单击选项卡页面的其他位置,则弹出窗口隐藏但加载框仍然可见。
是否有人知道如何隐藏加载框,即使弹出窗口变得不可见/失去焦点?我认为它会消失,因为有一个setTimeout函数将其删除,但是当弹出窗口失去焦点时,它不起作用。
与此处粘贴所有相关代码不同, 这里 是扩展程序的下载链接,以便您可以看到我具体的意思。
在实际扩展程序中,我使用ajax请求,而不是setTimeout:
感谢您的帮助。
截图:
![enter image description here](https://i.imgur.com/U4z5FxY.png)
是否有人知道如何隐藏加载框,即使弹出窗口变得不可见/失去焦点?我认为它会消失,因为有一个setTimeout函数将其删除,但是当弹出窗口失去焦点时,它不起作用。
与此处粘贴所有相关代码不同, 这里 是扩展程序的下载链接,以便您可以看到我具体的意思。
在实际扩展程序中,我使用ajax请求,而不是setTimeout:
$.ajax({
url : 'localhost url here....',
data : data, // this is searialized form data
dataType : 'json',
method : 'post',
success : function (r) {
if (r.success) {
window.close();
var notification = webkitNotifications.createNotification(
'img/48.png',
'Done!',
'The page has been saved successfully :)'
);
notification.show();
setTimeout(function () {
notification.cancel();
}, 5000);
}
else {
if (r.error) {
$ediv.text(r.error).fadeIn('fast');
}
}
},
error : function (r) {
$ediv.text('Unknown error, please try again later.').fadeIn('fast');
},
complete : function (r) {
chrome.tabs.executeScript(
null, {code : "document.body.removeChild(document.getElementById('__wnoverlay__'))"}
);
}
});
感谢您的帮助。