【问题标题】:How to insert HTML with a chrome extension?如何插入带有 chrome 扩展名的 HTML?
【发布时间】:2013-09-30 20:25:19
【问题描述】:

我有一个上下文菜单选项,当它被选中时,我想插入一些 HTML。我试过这样做

var div=document.createElement("div");
document.body.appendChild(div);
div.innerText='test123';

但这对我不起作用。

注意我尽量避免使用 jQuery。

【问题讨论】:

  • 您的内容脚本事件监听器在后台页面运行;您正在操作该背景页面,而不是在浏览器的活动选项卡中打开的页面。必须由content script 操作标签页。背景页面可以使用message passing 来指示内容脚本何时应该采取行动。 (或者,您可以使用executeScript 创建一种即时内容脚本。)
  • 当我在控制台中运行它而不是在扩展中运行它时,它对我有用。您能否将您的文件发给我,以便我查看它,看看我可能做错了什么?
  • 我认为 @DesertIvy 是在确认您的脚本是正确制定的​​,而不一定是您在扩展程序结构中的正确位置运行它。
  • 我明白了,我现在正在阅读内容脚本。希望我能尽快让它工作。
  • 您只需将代码放在扩展程序的content.js 文件中,然后在点击处理程序中执行chrome.tabs.executeScript( {file: 'content.js'} );

标签: javascript google-chrome-extension


【解决方案1】:

Here您可以研究如何创建扩展并下载示例 manifest.json。

Content Scripts 可用于运行匹配某些 url 的 js/css。

ma​​nifest.json

{
  "name": "Append Test Text",
  "description": "Add test123 to body",
  "version": "1.0",
  "permissions": [
    "activeTab"
  ],
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["content-script.js"]
    }
  ],
  "browser_action": {
    "default_title": "Append Test Text"
  },
  "manifest_version": 2
}

content-script.js

var div=document.createElement("div"); 
document.body.appendChild(div); 
div.innerText="test123";

上面将为所有匹配http://*/*的url执行content-script.js,其中*是一个通配符。所以基本上所有http 页面。

内容脚本有许多属性,可以在上面的链接中找到。

Programmatic injection 可以在不应该将 js/css 注入到每个匹配模式的页面中时使用。

下面展示了如何执行扩展图标的jsonclick:-

ma​​nifest.json

{
  "name": "Append Test Text",
  "description": "Add test123 to body",
  "version": "1.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Append Test Text"
  },
  "manifest_version": 1
}

background.js

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript({
    code: 'var div=document.createElement("div"); document.body.appendChild(div); div.innerText="test123";'
  });
});

这使用executeScript 方法,该方法还可以选择调用单独的文件,如下所示:-

background.js

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript({
    file: "insert.js"
  });
});

插入.js

var div=document.createElement("div"); 
document.body.appendChild(div); 
div.innerText="test123";

【讨论】:

  • > js onclick 的扩展图标是这里的manifest 文件不完整吗?如果没有声明 page_action 或文件,您将如何单击图标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 2010-11-13
  • 2015-04-13
  • 1970-01-01
  • 2013-12-01
  • 2013-11-15
  • 1970-01-01
相关资源
最近更新 更多