Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 努力在Chrome扩展中获取DOM数据_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 努力在Chrome扩展中获取DOM数据

Javascript 努力在Chrome扩展中获取DOM数据,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我在这里找到了几个关于堆栈溢出的非常好的投票问题,尽管我实际上找不到有效的解决方案 我一直在努力寻找答案:, 但是我仍然得到一个完全空白的控制台(尽管重新加载了扩展) manifest.json: { “清单版本”:2, “名称”:“测试扩展”, “版本”:“0.0”, “背景”:{ “坚持”:假, “脚本”:[“background.js”] }, “内容脚本”:[{ “匹配项”:[“https://*/*”], “js”:[“content.js”] }], “浏览器操作”:{ “默认标题”

我在这里找到了几个关于堆栈溢出的非常好的投票问题,尽管我实际上找不到有效的解决方案

我一直在努力寻找答案:, 但是我仍然得到一个完全空白的控制台(尽管重新加载了扩展)

manifest.json:

{
“清单版本”:2,
“名称”:“测试扩展”,
“版本”:“0.0”,
“背景”:{
“坚持”:假,
“脚本”:[“background.js”]
},
“内容脚本”:[{
“匹配项”:[“https://*/*”],
“js”:[“content.js”]
}],
“浏览器操作”:{
“默认标题”:“测试扩展”,
“默认图标”:“icon.png”,
“默认弹出窗口”:“popup.html”
},
“权限”:[“活动选项卡”]
}
background.js:

//用作回调的函数
函数logDOM(domContent){
log('我收到了以下DOM内容:\n'+domContent);
}
//单击浏览器操作按钮时。。。
chrome.browserAction.onClicked.addListener(函数(选项卡){
console.log(tab.url);
sendMessage(tab.id,{text:'report_back'},logDOM);
});
content.js:

//侦听消息
chrome.runtime.onMessage.addListener(函数(msg、sender、sendResponse){
//如果收到的消息具有预期的格式。。。
如果(msg.text==='report\u back'){
//调用指定的回调函数,传递
//将网页的DOM内容作为参数
sendResponse(document.all[0].outerHTML);
}
});

我做错什么了吗?

浏览器操作中删除
默认弹出窗口

问题是您正在manifest.json中为
浏览器操作
定义一个
默认弹出窗口
。将
浏览器\u操作更改为:

"browser_action": {
  "default_title": "Test Extension",
  "default_icon": "icon.png"
},
如果您定义了一个
默认\u弹出窗口
,则Chrome会尝试显示弹出窗口,而不会向您的后台脚本发送单击事件。您应该看到一个弹出窗口,显示未找到您的文件

仅注入
https
方案页面:

假设您只将内容脚本注入
https://
页面,请确保您正在使用
https
方案的页面上进行测试

通过将内容脚本注入所有URL,您可能会发现更容易进行测试。您可以通过将manifest.json中的
content\u脚本
键更改为:


浏览器中删除
默认弹出窗口
操作

问题是您正在manifest.json中为
浏览器操作
定义一个
默认弹出窗口
。将
浏览器\u操作更改为:

"browser_action": {
  "default_title": "Test Extension",
  "default_icon": "icon.png"
},
如果您定义了一个
默认\u弹出窗口
,则Chrome会尝试显示弹出窗口,而不会向您的后台脚本发送单击事件。您应该看到一个弹出窗口,显示未找到您的文件

仅注入
https
方案页面:

假设您只将内容脚本注入
https://
页面,请确保您正在使用
https
方案的页面上进行测试

通过将内容脚本注入所有URL,您可能会发现更容易进行测试。您可以通过将manifest.json中的
content\u脚本
键更改为:


您是否在后台页面控制台中chrome://extensions?Are 您可以在后台页控制台中从chrome://extensions?thanks 这么多!我想问题是我没有在我的背景页面上查看控制台。完全没想到去看那里哦!谢谢你在其他方面的解释。非常感谢!我想问题是我没有在我的背景页面上查看控制台。完全没想到去看那里哦!谢谢你在其他方面的解释。
{
  "manifest_version": 2,
  "name": "Test Extension",
  "version": "0.0",
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["content.js"]
  }],
  "browser_action": {
    "default_title": "Test Extension",
    "default_icon": "icon.png"
  },

  "permissions": ["activeTab"]
}