Как проверить шаблон соответствия URL-адресов по строке URL-адреса - PullRequest
0 голосов
/ 07 сентября 2018

Я могу получить вкладки браузера, используя шаблон соответствия

browser.tabs.query({ url: 'https://mozilla.org/*/b/*/' })

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns

Во время обновления вкладки я могу получить идентификатор вкладки и URL, но как это сделать?Я проверяю, соответствует ли вкладка моему исходному шаблону соответствия?

browser.tabs.onUpdated.addListener(event => {
    browser.tabs.get(event).then((tab) => {
        if (tab.status === 'complete') {
            if (?? tab.url matches 'https://mozilla.org/*/b/*/') {
                console.log("Do something")
            }
        }
    })
});

1 Ответ

0 голосов
/ 07 сентября 2018

Простой самописный сопоставитель звездочек будет:

function match(pattern, url) {
  pattern = pattern.split("/");
  url = url.split("/");
  
  while(url.length) {
   const p = pattern.shift();
   if(p !== url.shift() && p !== "*")
    return false;
  }
  return true;
}

console.log(
  match("https://example.com/*/test/", "https://example.com/a/test/"),
  match("https://example.com/*/test/", "https://example.com/a/b/")
);
     
...