iframe内部扩展弹出窗口或背景脚本的内容脚本

iframe内部扩展弹出窗口或背景脚本的内容脚本,iframe,google-chrome-extension,Iframe,Google Chrome Extension,我正在尝试与chrome扩展弹出窗口中的iframe交互。我知道content.js可以使用manifest.json注入到所有的框架中,但是它在网页中使用框架,而不是在扩展的弹出窗口中 这可行吗?我尝试了很多方法,但还没有找到解决办法 我的舱单: { "name" :"test", "version": "1.0", "manifest_version": 2, "description" :"Scraping Facebook", "permissions": [ "cookies",

我正在尝试与chrome扩展弹出窗口中的iframe交互。我知道content.js可以使用manifest.json注入到所有的框架中,但是它在网页中使用框架,而不是在扩展的弹出窗口中

这可行吗?我尝试了很多方法,但还没有找到解决办法

我的舱单:

{
"name" :"test",
"version": "1.0",
"manifest_version": 2,
"description" :"Scraping Facebook",
"permissions": [
  "cookies",
  "background",
  "tabs",
  "http://*/*",
  "https://*/*",
  "storage",
  "unlimitedStorage"
],
"icons": { "128": "images/pint.png" },
"content_scripts": [
  {
    "matches": [
      "http://*/*",
      "https://*/*"
    ],
    "js": ["jquery-3.1.0.min.js","content.js"],
    "run_at":"document_end"
  }
],
"web_accessible_resources": [
    "http://*/*",
    "https://*/*",
    "styles/*",
    "fonts/*"
],
"background": {
    "scripts": ["background.js"]
  },
"browser_action" :
    {
        "default_popup": "popup.html",
        "default_title": "test"
    }
}
在内容脚本声明中使用
“all_frames”:true
,将其注入iframe:

“内容脚本”:[{
“匹配项”:[“http://example.com/*" ],
“js”:[“content.js”],
“所有帧”:正确
}],
要将此iframe与普通选项卡区分开来,您可以在创建iframe时向URL添加一个伪参数,例如
http://example.com/?foo
这样您就可以在manifest.json中匹配它,就像
”http://example.com/*例如,foo*“

然后您可以使用:内容脚本启动它,扩展脚本注册一个侦听器

  • 简单的一次性发送消息:

    content.js:

    chrome.runtime.sendMessage('test',response=>{
    控制台日志(响应);
    });
    
    popup.js(或background.js等):

    chrome.runtime.onMessage.addListener((msg,sender,sendResponse)=>{
    log('popup-get',msg',from',sender);
    sendResponse(“response”);
    });
    
  • 长寿命港口:

    content.js:

    let port=chrome.runtime.connect({name:'test'});
    port.onMessage.addListener((消息,端口)=>{
    控制台日志(msg);
    });
    port.postMessage('from-iframe');
    
    popup.js(或background.js等):

    让iframePort;//以防以后在另一个函数中更改其行为
    chrome.runtime.onConnect.addListener(端口=>{
    iframePort=端口;
    port.onMessage.addListener((消息,端口)=>{
    控制台日志(msg);
    });
    port.postMessage('from-popup');
    });
    
popup.html的示例非常简单:



当然,您也可以使用DOM操作以编程方式添加iframe。

您好,我添加了my manifest.json您是否尝试将内容脚本插入弹出窗口中的iframe中以用于您自己的扩展或其他扩展?您的
浏览器\u操作
中存在popup.html,这意味着它是您自己的,但未明确说明。请说明主题:包括问题的完整副本。通常,包括manifest.json、一些背景、内容和弹出脚本以及HTML。寻求调试帮助的问题(“为什么此代码不工作?”)必须包括:►想要的行为,►特定的问题或错误,以及►在问题本身中复制它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:“如何创建”,以及。这是我自己的扩展名的弹出窗口,其中的iframe来自不同的域。我将用文件和更多详细信息编辑此问题谢谢您的详细回答