我遇到了在chrome中捕获新创建的标签的问题。
我使用chrome.tabs.create创建新选项卡,并将tabid传递给我的回调函数,该函数捕获它。
function createtab(url) { chrome.tabs.create({'url': url,'active':false}, function(tab) { captureWindowTab((tab.id); }); }
function captureWindowTab(tabid) { chrome.tabs.update(tabid, {}, function() { chrome.tabs.captureVisibleTab(27, {format:"png"}, function(dataUrl) { capturecallback(dataUrl); }); }); }
function capturecallback(dataurl) { console.log(dataurl); }
仅当我在当前现有标签上执行时,它才有效。我无法让它在新创建的标签上工作。总是返回undefined。
我不明白这个问题是什么。
答案 0 :(得分:0)
根据文档,您似乎需要主机权限(或所有主机权限)才能捕获它。请参阅以下文件:
https://developer.chrome.com/extensions/tabs.html#method-captureVisibleTab
您是否拥有主机权限或所有主机权限?
我想你可能还需要"标签"许可,如果您还没有。
答案 1 :(得分:0)
这样解决了:
chrome.tabs.onUpdated.addListener(function(tabid , info) {
//console.log('loading tab'+tabid);
if(info.status == "complete") {
chrome.tabs.get(tabid,function(tab) {
chrome.topSites.get(function(sites){
tab.url = NewTab.getHostFromUrl(tab.url);
console.log(tab.url);
//console.log('loaded '+tab.url);
for (var i = 8 - 1; i >= 0; i--) {
sites[i].url = NewTab.getHostFromUrl(sites[i].url);
//console.log('checking '+sites[i].url);
if(tab.url == sites[i].url && tab.url != 'newtab') {
chrome.tabs.update(tabid, {'highlighted':true,'active':true}, function(tab){
chrome.tabs.captureVisibleTab(chrome.windows.WINDOW_ID_CURRENT, {format:"jpeg","quality":30}, function(dataUrl) {
// add data URL to array
if(dataUrl) {
console.log('its a winner!');
window.localStorage['topsite_'+encodeURI(NewTab.getHostFromUrl(tab.url))+'_thumbnail'] = dataUrl;
NewTab.getTopSites();
}
});
});
}
};
});
});
}
});