JQuery 和 Chrome 扩展

2023-12-03

我正在尝试开发一个测试 chrome 扩展,以了解 JQuery 如何与 chrome 扩展配合使用。从提供的代码来看,我认为它应该将弹出窗口的背景更改为黄色。

我尝试使用内容脚本和背景加载 jquery.js。当我通过后台脚本命令加载它时,它显示 jquery.js 已加载。

这是我的文件:

清单.json

    {
  "name": "Hello World!",
  "version": "1.0",
  "manifest_version": 2,
  "description": "My first Chrome extension.",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "js": ["jquery.js", "content.js"]
    }
  ]
}

弹出窗口.html

    <html>
  <head>
    <script src='jquery.js'></script>
    <script src='content.js'></script>
  </head>
</html>

内容.js

$('a').css({'background-color': 'yellow'});

我的扩展文件夹中也有 jquery.js。如果有人给我一些其他东西来尝试让它工作,或者可以向我展示一个链接 jquery 的 chrome 扩展的非常好的工作示例,那就太好了!


你一直没有把不应该放在一起的东西混在一起。

你做错了一件事:
由于您不希望在单击浏览器操作按钮时出现弹出窗口,因此不应指定“默认弹出窗口”:

...
"browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"   // <-- this line should go away
},
...

话虽如此,解决该问题的最佳方法(imo)如下:

  1. 有你的背景页面(或者更好活动页面)听chrome.browserAction.onClicked event.
    (请注意,为了触发事件,必须设置默认弹出窗口。)

  2. 当发生这种情况时,使用程序化注入注射jquery.min.js and content.js进入活动选项卡的页面,使用chrome.tabs.executeScript.

  3. 为了使上述步骤成为可能,您还必须声明必要的权限,即"tabs"和网址匹配模式您的扩展程序应该可以访问的页面(例如"http://*/*" and "https://*/*"可以访问所有页面http and https计划)。

我还建议,好好看看舱单规范以熟悉可用字段和可能的值。


最后,一些演示源代码可以帮助您入门(我知道所有信息一次可能会让人不知所措):

扩展文件夹结构:

       _______________LinkHighlighter_______________
      |                      |                      |
manifest.json               img                     js
                             |                      |__background.js
                        icon<XX>.png(*)             |__content.js
                                                    |__jquery.min.js
(*): <XX> = 16, 19, 38, 48, 128

清单.json:

{
    "manifest_version": 2,

    "name": "Link Highlighter",
    "version": "1.0",
    "description": "...",
    "icons": {
         "16": "img/icon16.png",
         "48": "img/icon48.png",
        "128": "img/icon128.png"
    },

    "browser_action": {
        "default_title": "Link Highlighter",
        "default_icon": {
            "19": "img/icon19.png",
            "38": "img/icon38.png"
        }
    },
    "background": {
        "persistent": false,
        "scripts": ["js/background.js"]
    },

    "permissions": [
        "tabs",
        "http://*/*",
        "https://*/*"
    ]
}

背景.js:

// When the user clicks the browser-action button...
chrome.browserAction.onClicked.addListener(function(tab) {
    // ...inject 'jquery.min.js' and...
    chrome.tabs.executeScript(tab.id, {
        file: "js/jquery.min.js",
        allFrames: true,
        runAt: "document_idle"
    });
    // ...inject 'content.js' into the active tab's page
    chrome.tabs.executeScript(tab.id, {
        file: "js/content.js",
        allFrames: true,
        runAt: "document_idle"
    });
});

内容.js:

$("a").css({ "background-color": "yellow" });

如果您还有其他疑问/问题,请随时回来:)


为了完整起见...
...让我提一下,还有其他可能的方法,例如:

  1. 使用页面操作而不是浏览器操作。

  2. 将内容脚本注入每个页面,并通过从后台页面到内容脚本的消息传递来触发突出显示。

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

JQuery 和 Chrome 扩展 的相关文章

随机推荐

  • 数据总是在变化(SQL Server Management Studio)

    我正在使用 SQL Server Management studio 并不断收到相同的错误 摆脱它的唯一方法 通常 是重置 SQL Server 这非常烦人 有时在我的远程计算机上是不可能的 当我向表中添加一行 然后转到 编辑前 200 行
  • 在 PuTTY 中启动 SSH 连接,运行命令,并使会话保持活动状态

    我想每次通过 PuTTY SSH 到服务器时运行一些 shell 命令 我正在连接到由其他人管理的生产 Web 服务器 并且我不想在那里存储我自己的脚本 我看到了这个选项连接 gt SSH gt 远程命令 但是如果我将初始化命令放在那里 启
  • TypeScript:将键值类型反向映射到值键

    给定一个类型的对象 type Key2Value foo bar voo doo 假设该类型的值始终是字符串类型 如何构造实用程序类型ReverseMap
  • gprof 的替代品 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 Locked 这个问题及其
  • Spring JMS 和 Oracle AQ

    有人让 Spring JMS 与 Oracle AQ 队列一起使用吗 我正在尝试根据这篇文章连接到 AQhttp blog nominet org uk tech 2007 10 04 spring jms with oracle aq 但
  • 使用 Angular JS 标签(例如 ng-view)从网络获取文本

    我正在尝试从网站获取所有可见文本 我使用 python scrapy 来完成这项工作 然而 我观察到 scrapy 仅适用于 HTML 标签 如 div body head 等 而不适用于 Ang view 等角度 js 标签 如果 ng
  • MongoDB 使用 Node.js 获取集合中的文档数量(计数)

    我目前正在编写一个函数 该函数应该返回集合中的文档数量 问题是当我返回值时它显示未定义 这是我的代码 var MongoClient require mongodb MongoClient open the connection the D
  • 您如何处理源代码管理中的配置文件?

    假设您有一个典型的 Web 应用程序和一个文件配置 无论如何 每个从事该项目的开发人员都会有一个适用于他们的开发盒的版本 其中会有开发版 产品版和阶段版 您如何在源代码控制中处理这个问题 根本不签入该文件 用不同的名称检查它还是干脆做一些奇
  • 将整数除以 2 时哪个选项更好?

    以下哪种技术是将整数除以 2 的最佳选择 为什么 技巧一 x x gt gt 1 技巧2 x x 2 Here x是一个整数 使用最能描述您要执行的操作的操作 如果将数字视为位序列 请使用位移位 如果将其视为数值 请使用除法 请注意 它们并
  • 我可以将多个 MySQL 行连接到一个字段中吗?

    Using MySQL 我可以做类似的事情 SELECT hobbies FROM peoples hobbies WHERE person id 5 我的输出 shopping fishing coding 但我只想要 1 行 1 列 预
  • Hadoop 和图像 3D 渲染

    我必须制作一个项目 3D 图像的分布式渲染 我可以使用标准算法 目的是学习hadoop而不是图像处理 那么有人可以建议我应该使用哪种语言 c 或 java 以及 3d 渲染器的一些标准实现吗 任何其他帮助都会非常有用 Hadoop 使用映射
  • 使用 WebpackExternals 进行酶单元测试

    我目前正在测试一个依赖于带有 webpack 外部脚本的组件 DBPanel js import React PureComponent from react import from jquery webpack 外部文件如下所示 webp
  • 如何检查 NSDictionary 或 NSMutableDictionary 是否包含键?

    我需要检查字典是否有密钥 如何 objectForKey如果键不存在则返回 nil
  • 在 R 中提取文件名的一部分

    我正在尝试编写一些代码来打开文件夹中的所有数据文件 应用一个函数 或一组函数 来提取我感兴趣的数据 到目前为止 一切都很好 问题是我想使用文件名的一个元素重新命名我从每个文件中提取的列之一 但我很难弄清楚如何提取它 我有一堆名为 YYYY
  • 如何在 RxJS observable 中添加额外的字段并等待它完成?

    我有一个返回的可观察值items 我只需要一个特定的项目 并且我想从也可观察到的 http 请求向其添加一些额外的字段 下面的代码是我试图实现这一目标的方法 但它不起作用 我需要完成所有可观察量才能获取完整的项目数据ngOnInit 我缺少
  • 如何在 pdf 中不显示页码 = 1 ? (html css)

    我的代码 html 像这样
  • MongoDB-Java 驱动程序:插入失败时捕获异常

    我正在做一个非常基本的插入 如下所示 try DB mongoDb mongo getDB databaseName DBCollection collection mongoDb getCollection collectionName
  • Postgres 中的存储过程是否在数据库事务中运行?

    如果存储过程在中间失败 那么从 SP 开头开始的更改是否会隐式回滚 或者我们是否必须编写任何显式代码来确保 SP 仅在数据库事务中运行 严格来说 Postgres 并没有have 存储过程如 ISO IEC 标准第 11 版之前的定义 该术
  • 在过程 MySQL 5.5.x 中获取 SQLEXCEPTION 消息

    我怎样才能得到错误文本MySQL 5 5存储过程时SQLEXCEPTION occurs 我需要一些类似的东西来看看出了什么问题 DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOS
  • JQuery 和 Chrome 扩展

    我正在尝试开发一个测试 chrome 扩展 以了解 JQuery 如何与 chrome 扩展配合使用 从提供的代码来看 我认为它应该将弹出窗口的背景更改为黄色 我尝试使用内容脚本和背景加载 jquery js 当我通过后台脚本命令加载它时