我正在寻找一种访问(枚举,获取和执行)Chrome的方法 来自Chrome(开发工具)扩展程序的开发工具摘要。
代码段管理API似乎没有公开的公共API 或基础存储系统。
所以我看了dev tools frontend code。
逆向工程的过程:
我在源代码中全局搜索了“代码段”,并浏览了 发现。
在构造函数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
上下文仍然包含。{p>
结论:
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。