6

我想创建一个不属于 chrome 插件的网站,而只是使用插件向其公开的一些 API。这可能吗?如果可以,我该怎么做?我用谷歌搜索了这个问题,但找不到任何东西。

我正在尝试使用内容脚本,但没有任何反应。有人可以解释这里有什么问题吗?

清单.json

{
  “清单版本”:2,

  "name": "Hello World 扩展",
  "description": "这个扩展打印 hello world。",
  “版本”:“1.0”,
  “背景”: {
    “页面”:“背景.html”
  },
  “浏览器操作”:{
    "default_icon": "img/icon.png",
    “default_popup”:“popup.html”
  },
  “内容脚本”:[
    {
      "匹配": ["http://locahost:8888/*"],
      “js”:[“EmotivAPI.js”]
     }
   ]
}

EmotivAPI.js

var 端口 = chrome.runtime.connect();
console.log("你好?");
window.addEventListener("消息", function (event) {
    // 我们只接受来自我们自己的消息
    如果 (event.source != 窗口)
        返回;

    if (event.data.type && (event.data.type == "FROM_PAGE")) {
        console.log("收到的内容脚本:" + event.data.text);
        port.postMessage(event.data.text);
        alert("收到!");
    }
}, 错误的);

网页中的js

window.sayHello = 函数 () {
        window.postMessage({ type: "FROM_PAGE", text: "来自网页的你好!" }, "*");
    }
    console.log('已加载 Emotiv 扩展。');
}

我正在从控制台调用 window.sayHello()

4

1 回答 1

3

在这种情况下,内容脚本可以为您提供帮助。

内容脚本将被注入到页面中:

"content_scripts": [
    {
      "matches": ["http://www.google.com/*"], // try with "http://localhost:*/*" or "http://localhost:*" 
      "css": ["mystyles.css"],
      "js": ["content_script.js"]
    }
  ]

如果您只想偶尔注入代码,请改用权限字段

/* in manifest.json */
"permissions": [
  "tabs", "http://*/*"
],

在您的扩展 html 文件中,您可以通过以下方式执行脚本:

chrome.tabs.executeScript(null, {file: "content_script.js"});
于 2013-09-19T14:44:19.693 回答