想要捕获可能处于非活动状态的选项卡的图像。
问题在于,当使用此处显示的方法时,选项卡经常没有时间在捕获之前加载,导致失败。
chrome.tabs.update()
回调在选项卡可以被捕获之前执行。
我还尝试添加事件监听器,例如 tabs.onActivated
和 tabs.onHighlighted
并在触发时进行捕获,但结果是相同的。因此,我还尝试了在 chrome.tabs.update()
上使用 highlighted
而不是 active
- 以及两者的组合;带有监听器和回调。
使其部分工作得更好的唯一方法是使用 setTimeout()
,但这非常不可靠且丑陋。事实上,在捕获之前必须激活选项卡有点吵闹 - 但是如果必须添加延迟,则问题会变得更糟。
这更像是我的扩展程序的一项便利功能,但使其正常工作也很好。
/* Not the real code, but the same logic. */
var request_tab = 25,
request_win = 123
old_tab;
/* Check which tab is active in requested window. */
chrome.tabs.query({
active : true,
windowId : request_win
}, function (re) {
old_tab = re[0].id;
if (old_tab !== request_tab) {
/* Requested tab is inactive. */
/* Activate requested tab. */
chrome.tabs.update(request_tab, {
active: true
}, function () {
/* Request capture */ /* CB TOO SOON! */
chrome.tabs.captureVisibleTab(request_window, {
format : 'png'
}, function (data) {
/* ... data ... */
/* Put back old tab */
chrome.tabs.update(old_tab, {
active: true
});
})
});
} else {
/* Requested tab is active. */
/* Request capture. */
chrome.tabs.captureVisibleTab(request_window, {
format : 'png'
}, function (data) {
/* ... data ... */
})
}
});
onActivated
和onHighlighted
。没有触发onUpdated
事件。选项卡的状态(通过tabs.get()
或tabs.query()
)都显示为“complete”等。我无法重新加载页面。 - user3342816chrome.tabs.update()
更新选项卡,那么还有其他方法吗?”(除了要求用户这样做...:P) - user3342816