Mat*_*ert 6 javascript google-chrome-extension content-script
使用内容脚本,您可以将脚本标记注入DOM,以便访问原始页面中的变量(如本问题中所述).
我想避免将代码注入每个页面,而只是在用户单击扩展图标时执行此操作.
当我尝试使用与内容脚本相同的代码时,值未定义,尽管脚本已正确插入.
这可能吗?否则使用内容脚本并与其通信首选解决方案?
这是我正在使用的代码:
var scr = document.createElement("script");
scr.type="text/javascript";
scr.innerHTML = "setInterval('console.log(window.testVar)', 1000)"
document.body.appendChild(scr)
Run Code Online (Sandbox Code Playgroud)
清单摘录:
"permissions": [
"tabs",
"http://*/*", "https://*/*"
],
"background": {
"scripts": ["inject.js"]
},
Run Code Online (Sandbox Code Playgroud)
不。那不可能 您可以注入一个脚本,但是它只能访问DOM,并且可以进行DOM操作。它无法在当前页面的上下文中读取javascript变量或执行函数。您的javascript代码在沙盒中运行,并且仅限于DOM元素。
您可以使用以下代码创建一个新的后台脚本:
chrome.browserAction.onClicked.addListener( function() {
chrome.tabs.executeScript( { file: 'inject.js' } );
});
Run Code Online (Sandbox Code Playgroud)
您inject.js应该保留作为扩展的一部分,但您不需要在清单中提及它。这样,每次您按扩展图标时,它将作为内容脚本运行。您没有包含定义 browserAction 的清单部分,但您只需要不指定default_popup.
| 归档时间: |
|
| 查看次数: |
13434 次 |
| 最近记录: |