javascript - 如何从常规网站调用 Chrome 扩展中定义的函数?

标签 javascript google-chrome google-chrome-extension

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

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

list .json

{
  "manifest_version": 2,

  "name": "Hello World Extension",
  "description": "This extension prints hello world.",
  "version": "1.0",
  "background": {
    "page": "background.html"
  },
  "browser_action": {
    "default_icon": "img/icon.png",
    "default_popup": "popup.html"
  },
  "content_scripts": [
    {
      "matches": ["http://locahost:8888/*"],
      "js": ["EmotivAPI.js"]
     }
   ]
}

EmotivAPI.js

var port = chrome.runtime.connect();
console.log("Hello?");
window.addEventListener("message", function (event) {
    // We only accept messages from ourselves
    if (event.source != window)
        return;

    if (event.data.type && (event.data.type == "FROM_PAGE")) {
        console.log("Content script received: " + event.data.text);
        port.postMessage(event.data.text);
        alert("recieved!");
    }
}, false);

网页中的js

window.sayHello = function () {
        window.postMessage({ type: "FROM_PAGE", text: "Hello from webpage!" }, "*");
    }
    console.log('Emotiv extension loaded.');
}

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

最佳答案

Content Scripts在这种情况下可以为您提供帮助。

内容脚本将被注入(inject)页面:

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

如果您只想在某些时候注入(inject)代码,请改用权限字段

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

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

chrome.tabs.executeScript(null, {file: "content_script.js"});

关于javascript - 如何从常规网站调用 Chrome 扩展中定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897550/

相关文章:

javascript - 如何使 Javascript 按位运算符的行为像 C 中一样?

javascript - Android Chrome 中的 Web Speech API 问题

javascript - Chrome 扩展程序捕获选项卡音频

html - 在 Chrome 上滚动后,背景图像附件固定(视差)滞后/闪烁

javascript - 在我的 chrome 扩展的其他选项卡中注入(inject)脚本时出错

google-chrome - chrome 扩展 - ip 域权限

javascript - 为什么 JavaScript 中的值没有被复制到剪贴板?

javascript - 按距离与钛合金型号排序

javascript - IE Javascript 样式显示不工作

css - IE10悬停伪类没有背景色不起作用