Google Chrome API JavaScript обнаруживает файл, открытый в браузере

Для расширения google chrome мне нужно иметь возможность определять, использует ли пользователь chrome для просмотра, чтобы открыть файл .html.

Я пробовал другой метод, но, похоже, я не получаю событие

"permissions": ["webRequest","browsingData", "fileSystemProvider"],
  "file_system_provider_capabilities": {
       "configurable": true,
       "watchable": true,
       "source": "file"
},

Я пытался перехватить в webRequest

chrome.webRequest.onBeforeSendHeaders.addListener(function(info){
// info.url does not give me the file.html which opened


)};

Я пробовал использовать разные методы обработки файловых событий, но ни один из них не загорелся.

    chrome.fileSystemProvider.onOpenFileRequested.addListener(function(file){
    console.log("open file");
});
chrome.fileSystemProvider.onReadFileRequested.addListener(function(file){
    console.log("read file");
});
chrome.fileSystemProvider.onExecuteActionRequested.addListener(function(){
    console.log("execute file");
});

Заранее благодарю за любую помощь


comment
Используйте прослушиватель chrome.tabs.onUpdated. Очевидно, что webRequest предназначен для веб-запросов, а fileSystemProvider — для предоставления виртуальных файловых систем.   -  person wOxxOm    schedule 18.05.2018
comment
Я получаю событие для tabs.onUpdated, но не вижу имени файла. Идея заключается в том, что когда пользователь открывает html-файл локально, я должен иметь возможность обнаруживать и сканировать содержимое.   -  person user332951    schedule 19.05.2018
comment
URL-адрес вкладки — это имя файла, поэтому не должно быть проблем с его просмотром, если у вас есть "permissions": ["<all_urls>"] в manifest.json (или file://*). В документации должны быть примеры.   -  person wOxxOm    schedule 19.05.2018
comment
большое спасибо за ваш комментарий, он дал мне некоторую подсказку. Сейчас у меня есть разрешение ://*/, но этого недостаточно, мне также нужно включить файл://. Итак, теперь я могу захватить файловый протокол в chrome.webRequest.onBeforeRequest.   -  person user332951    schedule 19.05.2018


Ответы (1)


Большое спасибо, что wOxxOm дал мне подсказку. В моем разрешении сейчас есть ":///". Мне нужно включить «file://*» в разрешение. Я думал, что *: должно быть достаточно хорошо, но не в этом случае. Итак, прямо сейчас я могу видеть протокол file:// в chrome.webRequest.onBeforeRequest.

person user332951    schedule 19.05.2018
comment
Я попробовал предложенную технику, у меня не получилось. Я вижу много запросов, которые делает страница - файлы .js и .css, но не .html как таковой, не первый запрос. Не могли бы вы написать код, перехватывающий запрос к локальному файлу при его открытии через браузер? - person RussCoder; 23.03.2019
comment
Я использовал Firefox, и оказалось, что Firefox не запускает событие при открытии локального файла, а Opera (и, возможно, Chrome тоже). Кстати, Firefox запускает событие onBeforeNavigate при открытии локального файла, а Opera — нет. - person RussCoder; 23.03.2019