2017-05-05 12 views
0

したがって、特定のURLを持つ開いたタブを循環する拡張機能に対して、次のコードがあります。else else文がelseを実行しない場合のクロム拡張

chrome.browserAction.onClicked.addListener(function(tab) { 
console.log('Get URL'); 
chrome.tabs.query(
    {currentWindow: true, url: 'https://www.google.com/*'}, 
    function(tabs) { 
    tabs.forEach(function(tab) { 
     console.log('Tab ID, URL: ', tab.id, ' ', tab.url); 
      if(tab.url !== '') 
      { 
      //tab.focus(); 
      console.log('if !== \'\''); 
      chrome.browserAction.setBadgeText({text: "YES"}); 
      chrome.browserAction.setBadgeBackgroundColor({color: "GREEN"}) 
      var updateProperties = {"active": true}; 
      chrome.tabs.update(tab.id, updateProperties, function(tab){ }); 
      } 
      else 
      { 
      chrome.windows.create({ url: "https://www.google.com", type: "popup" }); 
      chrome.browserAction.setBadgeText({text: "NO"}); 
      chrome.browserAction.setBadgeBackgroundColor({color: "RED"}) 
      } 
    }); 
}); 

配列に項目がある場合、if条件はtrueで、ifの命令が実行されます。 配列に項目がない場合、if条件はfalseであり、何も実行されません。私の理解は、他の命令セットが実行されるべきであるということです。

答えて

0

tabs.forEachは、配列の各要素に対して渡された関数を呼び出します。配列に0個の要素が含まれている場合、関数は呼び出されないため、条件がチェックされた時点まで到達しません。

あなたのelse caseはタブに1つ以上の要素が含まれ、少なくとも1つの要素にtab.urlが ""または "'に設定されている場合にのみ実行されます。

+0

これはまさにそれです。 – IronTom

関連する問題