Background.js 未找到使用内容脚本注入的内容
Background.js Doesn't Find Content Injected with Content Script
我的 Chrome 扩展有一个 Content-Script 可以将自定义 DIV 注入当前页面。这部分有效。
但是,该扩展程序还有一个右键单击上下文菜单,单击该菜单时,应该以某种方式修改这个注入的 DIV(比方说,向 DIV 添加一些文本) .问题是找不到注入的内容。右键单击菜单处理程序在 Background.js 中,而此文件对内容一无所知。
manifest.js
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"css": ["contentstyle.css"],
"js": ["jquery-1.11.2.min.js", "contentscript.js"],
"background": {
"persistent": true,
"scripts": ["background.js"]
},
contentscript.js
// Add Custom DIV - works OK
var div = document.createElement( 'div' );
div.id = 'infoDiv';
document.body.appendChild( div );
document.getElementById('infoDiv').innerHTML = 'TEST';
background.js
// Add menu - gets added, but can't see Injected Content from here
chrome.contextMenus.create({
"title": "My Right-Click Menu",
"contexts": ["image"],
"onclick" : changeDiv
});
function changeDiv(e)
{
var divHTML = document.getElementById('infoDiv').innerHTML;
alert('Current HTML in DIV: ' + divHTML);
}
我无法从后台脚本中获取 divHTML,存在某种错误并且没有警告框。 Background 和 Content 之间能不能沟通?我被迫在后台脚本中实现菜单,对吗?
错误document
var divHTML = document.getElementById('infoDiv').innerHTML;
请先阅读Architecture Overview。您的后台脚本在单独的 HTML 文档中执行,因此不会 "see" 选项卡中的页面。
您需要将值传递给内容脚本才能对可见页面执行某些操作。您可能需要 Messaging.
我的 Chrome 扩展有一个 Content-Script 可以将自定义 DIV 注入当前页面。这部分有效。
但是,该扩展程序还有一个右键单击上下文菜单,单击该菜单时,应该以某种方式修改这个注入的 DIV(比方说,向 DIV 添加一些文本) .问题是找不到注入的内容。右键单击菜单处理程序在 Background.js 中,而此文件对内容一无所知。
manifest.js
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"css": ["contentstyle.css"],
"js": ["jquery-1.11.2.min.js", "contentscript.js"],
"background": {
"persistent": true,
"scripts": ["background.js"]
},
contentscript.js
// Add Custom DIV - works OK
var div = document.createElement( 'div' );
div.id = 'infoDiv';
document.body.appendChild( div );
document.getElementById('infoDiv').innerHTML = 'TEST';
background.js
// Add menu - gets added, but can't see Injected Content from here
chrome.contextMenus.create({
"title": "My Right-Click Menu",
"contexts": ["image"],
"onclick" : changeDiv
});
function changeDiv(e)
{
var divHTML = document.getElementById('infoDiv').innerHTML;
alert('Current HTML in DIV: ' + divHTML);
}
我无法从后台脚本中获取 divHTML,存在某种错误并且没有警告框。 Background 和 Content 之间能不能沟通?我被迫在后台脚本中实现菜单,对吗?
错误document
var divHTML = document.getElementById('infoDiv').innerHTML;
请先阅读Architecture Overview。您的后台脚本在单独的 HTML 文档中执行,因此不会 "see" 选项卡中的页面。
您需要将值传递给内容脚本才能对可见页面执行某些操作。您可能需要 Messaging.