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

2023-12-25

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

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

清单.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()


内容脚本 http://developer.chrome.com/extensions/content_scripts.html在这种情况下可以为您提供帮助。

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

"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"});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从常规网站调用 Chrome 扩展程序中定义的函数? 的相关文章

随机推荐

  • 如何使用python正则表达式替换使用捕获的组? [复制]

    这个问题在这里已经有答案了 假设我想改变the blue dog and blue cat wore blue hats to the gray dog and gray cat wore blue hats With sed我可以按如下方
  • 如何在 C 中将 2 字节整数转换并分解为 2 个不同的字符?

    我想转换一个 unsigned int 并将其分成 2 个字符 例如 如果整数为 1 则其二进制表示形式为 0000 0001 我希望 0000 部分位于一个 char 变量中 0001 部分位于另一个二进制变量中 我如何在 C 中实现这一
  • 对象“RealmSwiftPermissionRole”上不存在主键属性“名称”

    我在我的 swift 项目中使用 RealmSwift 作为数据库 今天 在 Xcode beta 版本 11 中打开我的项目后 我的应用程序崩溃并出现以下错误 由于未捕获的异常 RLMException 而终止应用程序 原因 对象 Rea
  • 跨进程(和机器)同步(信号量)

    背景 我的 WCF 应用程序必须调用一个没有任何并发 检查的服务 它是由第三方创建的服务 让他们添加并发检查可能是不可能的 我可以确保调用第三方服务的唯一方法是通过我的 WCF 应用程序 所以我正在考虑在我的代码中添加并发检查 为此 我将使
  • 与 APN 名称相关的问题

    我正在使用 simcom900 调制解调器 我能够成功建立 GPRS 连接并将数据从我的模块发送到服务器 我正在使用 2g Airtel SIM 我已将 APN 名称指定为 airtelgprs com 我也尝试过指定不同的 APN与 Ai
  • 在 React+Django 应用程序中加载图像

    所以我有一个用 python django 编写的小项目作为后端 并为前端做出反应 我按照以下教程进行操作 http geezhawk github io using react with django rest framework htt
  • 使用 htaccess 重定向到移动网站

    如何将用户重定向到我的移动页面 我在 htaccess 上使用此代码 RewriteEngine on RewriteCond QUERY STRING desktop RewriteCond HTTP USER AGENT android
  • Mock 对象和 Spring 注解

    我在代码中使用 Spring 注释来执行 DI 假设我有一个类 class1 依赖于另一个类 class2 我定义 class1 如下 Component public class class1 Resource private inter
  • 使用单个操作/规则生成多个目标[重复]

    这个问题在这里已经有答案了 如何编写规则来使用单个操作生成文件集 例子 文件x y z作为单次执行脚本的结果生成t sh它需要文件a作为输入 x y z a t sh GNU make 尝试执行t sh3次 您可以实施中指定的解决方案之一汽
  • 如何加载实体框架预编译视图

    我发现我可以通过使用预编译视图来提高应用程序的性能EdmGen exe tool 这一切都很好 但我和我的大学都无法解决这个问题how生成的 cs文件实际被项目使用 似乎没有任何对任何地方生成的类的引用 那么它是如何被包含在内的呢 任何人都
  • Spring Cloud Stream 多个函数定义

    是否有可能使用函数式 spring cloud function 具有多个独立函数 绑定的样式 我发现的所有示例始终只注册一个具有默认绑定的功能 beaninput output 我想注册多个 每个都有自己的绑定 传统上这可以使用sprin
  • 领域数据库解密失败

    Question 当我尝试打开加密领域文件时Realm Browser Windows 它给了我以下消息 这不是 Realm 文件或者已加密 输入 128 个字符的十六进制编码的加密密钥 重要的 我在保存到磁盘之前关闭我的领域 Code R
  • system()的返回码 = 256

    我使用 system 在 Swift 中执行 shell 命令 正如文档中所述 如果成功 返回值应为 0 如果失败 则返回值应为 1 但我得到 256 并且执行似乎成功了 还有一些其他与魔法值 256 相关的问题 但语言不同 没有解决方案
  • 如何从 NodeJS/Tedious 连接到 SQL Azure?

    我有一个 SQL Azure 数据库 正在尝试从 Azure Linux VM 中运行的 NodeJS 应用程序连接到该数据库 当我在本地 SQL 数据库 和 NodeJS 本地计算机上时 一切工作正常 但是 当我从虚拟机运行时 我得到以下
  • Java 中的弯曲文本

    我正在寻找最简单的方法来绘制一些 我的应用程序上椭圆对象周围的文本 我需要创造一种 拥抱 的感觉 到目前为止 我已经使用 Graphics2D 类来打印我的绘图 在屏幕上 我的 画布 是 BufferedImage 我的椭圆的宽度和高度分别
  • Microsoft.IdentityModel 与 System.IdentityModel

    我正在使用表单身份验证和 ASP NET MVC 2 开发基于声明的授权系统 我看到一个命名空间 Microsoft IdentityModel 提供了许多与另一个 System IdentityModel 相同的内容 系统 身份模型 ht
  • boost测试库:多重定义错误

    我正在尝试在 Windows 版 QTCreator 中测试我已经完成的库 微积分 我创建了一个主文件 并在一个单独的文件中创建了一个类用于测试 如果我编译在中找到的示例http www boost org doc libs 1 47 0
  • .Net RIA 服务:DomainService 需要无参数构造函数?

    我在带有一些 Silverlight 组件的 ASP Net 应用程序中使用 Net RIA 服务的 7 月 CTP 我正在从 Silverlight 调用 RIA 服务 当我尝试在域服务 LinqToEntitiesDomainServi
  • Python - “导入”或将模块作为参数传递?

    我想知道是否将模块对象传递给需要它的类或对象而不是使用import可能不是一个坏主意 因为它避免了对这些模块的硬依赖 我想知道是否有人比我更了解 Python Zen 可以解释为什么这是一个可怕 不可怕的想法 你所说的这个叫做依赖注入 ht
  • 如何从常规网站调用 Chrome 扩展程序中定义的函数?

    我想创建一个不属于 chrome 插件的网站 而只是使用该插件公开的一些 API 这可能吗 如果可以 我该怎么做 我用谷歌搜索了这个问题 但找不到任何东西 我正在尝试使用内容脚本 但没有任何反应 有人可以解释这里出了什么问题吗 清单 jso