如何将标签中的网址与网址数组相匹配 - Google Chrome扩展程序

时间:2011-06-23 12:19:07

标签: javascript google-chrome google-chrome-extension

到目前为止,我有这个:

// So we can notify users
    var notification = webkitNotifications.createNotification(
    'icon-48.png',  
    'Alert!', 
    'abcdefghijklmnop'
);
      // Called when the url of a tab changes.
      function checkForValidUrl(tabId, changeInfo, tab) {
        // Compare with a the URL
        if (tab.url.indexOf('example.com') > -1) {
          //then
          chrome.pageAction.show(tabId);
          notification.show();
        }
      };

      // Listen for any changes to the URL of any tab.
      chrome.tabs.onUpdated.addListener(checkForValidUrl);

不是简单地与上面的example.com进行比较,而是根据URL数组检查URL。我该怎么做?

2 个答案:

答案 0 :(得分:1)

同样的,除了你将遍历数组:

function checkForValidUrl(tabId, changeInfo, tab) {
  for (var i = 0, iLen = urlArray.length; i < iLen; i++) {
    if (tab.url.indexOf(urlArray[i]) > -1) {
      chrome.pageAction.show(tabId);
      notification.show();
      break; // halt for loop
    }
  }
};

另一种选择是使用正则表达式,而使用if (tab.url.match(re))re可以是/example\.com|example\.org|google\.com/

答案 1 :(得分:0)

如果数组很小,你可以迭代它并检查。
如果它明显更大,那么你最好的方法就是对它进行预先排序并对其进行二进制搜索。

另一个选项可以是将数组连接到单个字符串,然后检查此字符串中的存在(使用indexOf或使用正则表达式)