使用内容脚本,您可以将脚本标签注入DOM以便访问原始页面中的变量(如本问题所述)。
我想避免将代码注入每个页面,而仅在用户单击扩展图标时才这样做。
当我尝试使用与内容脚本相同的代码时,尽管脚本已正确插入,但未定义值。
这可能吗?否则,使用内容脚本并与之通信是首选解决方案吗?
这是我正在使用的代码:
var scr = document.createElement("script");
scr.type="text/javascript";
scr.innerHTML = "setInterval('console.log(window.testVar)', 1000)"
document.body.appendChild(scr)
清单摘录:
"permissions": [
"tabs",
"http://*/*", "https://*/*"
],
"background": {
"scripts": ["inject.js"]
},
您可以使用以下代码创建新的后台脚本:
chrome.browserAction.onClicked.addListener( function() {
chrome.tabs.executeScript( { file: 'inject.js' } );
});
您inject.js
应该将其保留为扩展的一部分,但无需在清单中提及它。这样,每次您按下扩展程序图标时,它将作为内容脚本运行。您没有在清单文件中定义browserAction的那一部分,但是只需要不指定即可default_popup
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句