Я ищу способ получить доступ (перечислить, получить и выполнить) фрагменты инструментов разработчика Chrome из расширения Chrome (инструменты разработки).
Кажется, что нет документированного, открытого API к API управления фрагментами
или базовой системе хранения.
Итак, я взглянул на код внешнего интерфейса dev tools .
Процесс обратного инжиниринга:
Я глобально искал в исходном коде «фрагменты» и просматривал результаты.
В конструкторе snippets/ScriptSnippetFileSystem.js
они инициализируютобъект настроек через Common.settings.createSetting()
.
В main/Main.js
_createSettings()
они создают глобальный объект хранения, который использует InspectorFrontendHost.setPreference()
в качестве бэкэнда для хранения данных посредством обратного вызова.
host/InspectorFrontendHost.js
InspectorFrontendHost.setPreference()
, с другой стороны, внутренне использует window.localStorage[name]
.И, конечно же, хранятся свойства, связанные с инструментами разработки, но без фрагментов.
Это привело меня к host/InspectorFrontendHostAPI.js
, который предоставляет API для глобального объекта.
Это привело меня к InspectorFrontendAPI
и DevToolsAPI
.Хотя он определен в инспекторе, проверяющем инструменты разработчика, он не определен в контексте devtools.js
моего расширения, несмотря на то, что permissions
содержит devtools
.
Выводы:
- Я думаю, что доступ к фрагментам возможен только через API файловой системы
- Мне нужно получить доступ к API файловой системы или к базовому хранилищу
InspectorFrontendAPI
и DevToolsAPI
Похоже, что API не предоставляют доступ к файловой системе в любом случае, возможно, через событие FileSystemAdded
.
Как я могу получить доступ к фрагментам?
manifest.json
{
"name": "Chrome dev tools extension test",
"version": "1.0",
"description": "Learn Chrome extensions",
"manifest_version": 2,
"devtools_page": "devtools.html",
"permissions": [
"devtools",
"storage",
"file:///*",
"http://*/*",
"https://*/*"
],
"background": {
"scripts": ["background.js"]
}
}
devtools.html
<script src="devtools.js"></script>
devtools.js
console.log("# devtools page loaded");
try {
console.log("# InspectorFrontendHostAPI", InspectorFrontendHostAPI);
} catch (e) {
console.error("# Check for APIs error: ", e);
}
try {
console.log("# InspectorFrontendHostAPI", DevToolsAPI);
} catch (e) {
console.error("# Check for APIs error: ", e);
}
«Загружена страница # devtools», два API - нет.