我遇到了一个非常奇怪的错误。
在我的 background.js 文件中,我有一个像这样关闭标签的函数
closeTabs = function(tabIds,category){
for(var i=0; i<tabIds.length;i++){
var url = findTabById(tabIds[i]).url;
console.log(url);
reservedUrls.push(url);
}
console.log(arrToString(reservedUrls));
if(tabIds.length>0){
chrome.tabs.remove(tabIds,function(){
});
}
}
这个函数是从我的浏览器操作中调用的。
然后我有一个用于删除选项卡事件的事件侦听器。
chrome.tabs.onRemoved.addListener(function(tabId){
console.log('removed');
var removedUrl = findTabById(tabId).url;
console.log(removedUrl);
console.log(arrToString(reservedUrls));
var index = reservedUrls.indexOf(removedUrl);
if(index>-1){
console.log('in here');
reservedUrls.splice(index,1);
} else {
var category = findCategoryById(tabId);
if(category){
for(var i=0;i<currentTabs[category];i++){
if(currentTabs[category][i].id==tabId){
currentTabs[category].splice(i,1);
}
}
} else {
for(var i=0;i<ungrouped.length;i++){
if(ungrouped[i].id==tabId){
ungrouped.splice(i,1);
}
}
}
console.log('sending message');
chrome.runtime.sendMessage({type:'removed',tabId:tabId});
}
console.log(currentTabs);
});
当第一个函数关闭选项卡时,我将它们放在 reservedUrls 中,以便逻辑行为不同。当我查看后台页面的控制台时,它会按应有的方式输入 if 语句。但是,在弹出窗口的控制台中,它会记录它导航到 else 语句。
有没有人经历过这种差异。如果是这样,典型的原因是什么?