2016-03-21 4 views
1

Я не получаю {urls: [": //www.mysite.com/ .js"]}, ["blocking"]); часть. Этот код можно найти @Chrome extension to modify page's script includes and JS с небольшой (принудительной) модификацией mysite (dot) com в example.com из-за правил stackoverflow.Как точно работает следующий фрагмент кода JavaScript для расширения Chrome Extension?

chrome.webRequest.onBeforeRequest.addListener(
 
    function(details) { 
 
     if(details.url == "http://www.example.com/js/library.js") 
 
      return {redirectUrl: "http://www.example.com/js/library_dev.js" }; 
 
    }, 
 
    {urls: ["*://www.example.com/*.js"]}, 
 
    ["blocking"]);

ответ

1

Второй параметр onBeforeRequest.addEventListener является необязательным объектом requestFilter.

Она имеет четыре дополнительных свойств

  • URL-адреса (по желанию массива строки)
    • Каждого элементом является URL-адрес или URL-шаблоном. Пожалуйста, ознакомьтесь с шаблонами соответствия шаблонов контента для определения шаблона URL. Запросы, которые не могут соответствовать ни одному из URL-адресов, будут отфильтрованы.
  • типов (опционально массив строки)
    • Каждый элемент представляет собой тип запроса описано выше. Запросы, которые не могут соответствовать ни одному из типов, будут отфильтрованы.
  • табетический (необязательно целое)
    • Идентификатор вкладки, в котором запрашивает происходит.
  • WindowID (необязательно целое)
    • Идентификатор окна, в котором запрашивает происходит.

Так urls: ["*://www.example.com/*.js"]} является добавление URL-фильтр к onBeforeRequest слушателя.

Это попытка сопоставить любой запрос на javascript-файл в домене www.example.com. Использование HTTP или HTTPS

[(схема) *]: \\ [(хост) www.example.com]/[(путь) * .js]

<url-pattern> := <scheme>://<host><path> 
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' 
<host> := '*' | '*.' <any char except '/' and '*'>+ 
<path> := '/' <any chars> 

https://developer.chrome.com/extensions/match_patterns


Третий параметр ['blocking'] является необязательным массив строк, используемых для получения дополнительной информации. Это изменяет способ возврата Chrome.

Поскольку он содержит «блокировку», функция обратного вызова обрабатывается синхронно.Это означает, что запрос блокируется до тех пор, пока функция обратного вызова не вернется. Поэтому для onBeforeRequest вы можете использовать это для отмены или перенаправления запроса до его возникновения.

Более подробную информацию можно найти здесь:

https://www.chromium.org/developers/design-documents/extensions/proposed-changes/apis-under-development/notifications-of-web-request-and-navigation