我正在尝试编写一个包含开发工具面板的Chrome扩展程序。这个扩展需要调用我在网页上的窗口上的属性上定义的函数。换句话说,扩展名仅适用于我自己的网页,我可以控制它们。例如:
// This script is added in my own webpage application when it loads
window.myTest = () => { /* do something */ }
我希望能够从Chrome扩展程序中调用window.myTest
函数。我需要制作类似https://github.com/zalmoxisus/redux-devtools-extension的功能。
似乎我需要通过从后端页面注入脚本/代码来完成此操作。我有所有工作,扩展后端页面被调用,我可以看到我注入的代码在页面上下文中调用(通过console.log测试被写入页面的控制台输出)。
这是我的代码:
的manifest.json
{
"manifest_version": 2,
"name": "MyTest",
"description": "MyTest",
"version": "0.0.1",
"minimum_chrome_version": "10.0",
"devtools_page": "devtools.html",
"background": {
"scripts": ["background.js"]
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["testscript.js"]
}],
"permissions": [
"tabs",
"<all_urls>"
]
}
testscript.js
window.myTest(); // myTest is undefined in the context of the injected script
background.js
// empty, but here to be able to open background page
我还有一个pannel,当点击一个按钮时,它会向后台页面发送一条消息。我知道面板和发送消息也有效。但window.myTest
仍为undefined
。
修改 从background.js中删除了注入,因为我没有使用它并且具有与描述相同的问题。
答案 0 :(得分:0)
最后,我得到了这方面的规格。 Mozilla和Chrome遵循相同的扩展规范。
内容脚本获得DOM的“干净”视图。这意味着:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts