Как сопоставить URL-адрес на вкладке с массивом URL-адресов - расширение Google Chrome - PullRequest
0 голосов
/ 23 июня 2011

Пока у меня есть это:

// 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 ]

1 голос
/ 23 июня 2011

То же самое, за исключением того, что вы перебрали бы массив:

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/.

0 голосов
/ 23 июня 2011

Если массив маленький, вы можете просто перебрать его и проверить.
Если он значительно больше, лучшим способом будет предварительно отсортировать его и выполнить двоичный поиск по нему.

Другим вариантом может быть объединение массива в одну строку, а затем просто проверить наличие в этой строке (либо с помощью indexOf, либо с помощью регулярного выражения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...