”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 构建内容脚本的初学者指南

构建内容脚本的初学者指南

发布于2024-07-29
浏览:105

浏览器扩展是浏览器的附加组件,用于为网站增添美感并提供最佳的用户体验。
扩展开发中的内容脚本概念是开发人员必须掌握的非常有用的知识,因为它显着扩展了浏览器扩展的用例。

本文旨在介绍什么是内容脚本以及它们如何工作。还有一个演示项目,其中将讨论 chrome 扩展的基础知识,并在我们的扩展中使用一个简单的内容脚本。就这样,我们开始吧。

了解内容脚本

首先,什么是内容脚本? 内容脚本是 JavaScript 代码,通过浏览器扩展与网页交互时,执行这些代码来修改网页。

它通过与网页文档对象模型交互轻松实现这一点。网页文档对象模型是给定网页的原始结构。 Chrome 内容脚本修改相关网页的方式通常称为注入

对内容脚本进行了简要介绍后,我们将继续在我们的网页上实现它。但在此之前,我们需要设置浏览器扩展来为脚本提供支持。

设置您的 Chrome 扩展程序

设置 Chrome 扩展文件非常简单。如需进一步参考构建扩展程序,下面附有 Chrome 扩展程序文档页面的链接。
理想的 Chrome 扩展程序必须包含详细的 manifest.json 文件,该文件提供有关 Chrome 扩展程序的默认背景信息。
此外,还包括要执行的相应 JS 文件。其他附加文件(HTML 和 CSS)有助于为扩展提供美感。
有了这个,让我们继续构建我们的扩展,合并我们的内容脚本注入。我们将通过创建一个 Chrome 扩展程序来说明内容脚本的强大功能,该扩展程序会在我们导航到的任何活动网页上显示一个按钮。

编写清单文件

在本节中,将突出显示并讨论清单文件的各个部分。这是项目清单文件的代码。

{
    "manifest_version": 3,
    "name": "Add Button",
    "version": "1.0",
    "description": "An extension that alerts a response when clicked",
    "permissions": ["activeTab"],
    "content_scripts": [
{
        "matches": [""],
        "js": ["ContentScript.js"],
        "CSS": ["Button.css"]
}
]
}

清单版本: 通常会请求清单版本。默认情况下,它设置为 3。因为它是比版本 2 更好的升级。
名称: 扩展名也输入在清单文件中。就我而言,该项目名为“添加按钮”。可以对其进行调整以满足用户的偏好。
还输入 Chrome 扩展程序的版本。在我们的例子中,这是该扩展的第一个版本,因此它被命名为 1.0,对该扩展的后续改进可以提示修改文件以分别增加版本。
描述:对扩展程序功能的描述还可以让扩展程序的非技术用户相信 Chrome 扩展程序。

后续提出的观点在构建内容脚本方面非常有说服力。

权限对象突出显示内容脚本的执行路径。这还可以防止内容脚本在意外的选项卡和网页中运行。它允许我们列出 Chrome 扩展程序可能需要的所有权限。某些 Chrome 扩展程序可能需要访问浏览器存储、其他 Chrome API 和某些相关网站。在我们的这个项目中,我们将 Chrome 扩展限制为仅使用正在使用的活动浏览器选项卡。为了降低 Chrome 扩展程序损害 Chrome 浏览器其他未使用部分的风险,这一点非常重要。

然后我们将在清单文件中配置内容脚本字段。
内容脚本字段指定我们打算注入到网页中的各种代码文件。
它包含匹配子字段,该字段指定我们希望其执行操作的网页 URL。 为了便于使用,我们只包含了所有 URL,允许它在我们访问的所有网页上运行。不过,您可以指定要在子字段值中注入的 URL。例如 www.google.com,

"matches": ["https://*.google.com/*"]
run_at": "document_idle

还指定了包含注入代码的JS文件。在我们的例子中,
我们的 JS 文件名为 Content script.js。我们还指定了用于设计该项目样式的 CSS 文件。

这样,我们就为我们的项目实现了清单文件的微型实现。然后我们将在后续部分继续编写我们的注入代码

创建内容脚本

本着保持简单的精神,我们将创建一个简单的按钮,单击该按钮时会显示一条警报消息。该按钮预计会覆盖现有网页。
下面是代码

// Create a button element
const button = document.createElement("button");

// Set the button's text content
button.textContent = "Click me";

// Set the button's ID
button.id = "clickMe";

// Append the button to the document body
document.body.appendChild(button);

// Add a click event listener to the button
button.addEventListener("click", () => {
  // Show an alert when the button is clicked
  alert("Click event listener was added");

  // Log a message to the console
  console.log("Hello world");
});

样式可以根据您的喜好进行更改,但是样式模板已包含在代码存储库中。

这是其实现的图片。

chrome extension
这是包含代码样式的源代码的链接。

先进技术和用例

到目前为止我们已经完成了该项目。然而,为了增进知识,这里有一些您在构建内容脚本时也可以实施的先进技术和最佳实践。

  • 与浏览器后台脚本的交叉交互
  • 实现数据状态管理器以允许动态脚本编写
  • 集成其他外部 API 可以进行数据操作和分析
  • 采用缓存策略来优化扩展性能
  • 将内容脚本与服务工作者集成

结论

您还可以在我的博客上与我互动,并在此处查看我的其他文章。下次继续编码!

版本声明 本文转载于:https://dev.to/oluwatobi2001/a-beginners-guide-to-building-content-scripts-df?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 现在已经九月了吗?
    现在已经九月了吗?
    大家早上好,MonDEV快乐☕ 我们已经全面回归,而九月重返 PC 的原因之一就是 Preptember! 那些从早期就开始关注时事通讯的人以及那些关注开源世界的人已经知道了,但在 10 月份有一个持续一个月的活动,即 Hacktoberfest;如果我们愿意的话,我们可以将其定义为开源节,邀请我们...
    编程 发布于2024-11-02
  • 为什么错误的 return 语句会导致 for 循环中程序过早终止?
    为什么错误的 return 语句会导致 for 循环中程序过早终止?
    for 循环中错误的返回语句在此编程问题中,用户在创建允许用户输入三种动物的程序时遇到困难。该程序旨在用包含名称、动物类型和年龄的 Pet 对象填充列表。然而,在输入第一个动物后,程序突然结束。经过分析,问题很明显出在 make_list 函数中 return 语句的位置。for 循环重复实现代码块...
    编程 发布于2024-11-02
  • Item 避免使用其他类型更合适的字符串
    Item 避免使用其他类型更合适的字符串
    1。避免使用字符串替代其他数据类型: 字符串旨在表示文本,但经常被误用来表示数字、枚举或聚合结构。 如果数据本质上是数字,请使用 int、float 或 BigInteger 等类型,而不是 String。 String age = "30"; // incorreto int age = 30;...
    编程 发布于2024-11-02
  • 如何使用sync.WaitGroup防止Go并发死锁?
    如何使用sync.WaitGroup防止Go并发死锁?
    解决 Goroutines 死锁在这种情况下,您在 Go 并发代码中遇到了死锁错误。让我们深入研究这个问题并提供一个有效的解决方案。该错误是由于生产者和消费者的行为不匹配而发生的。在生产者函数中实现的生产者在有限的时间内在通道 ch 上发送值。然而,存在于主函数中的消费者无限期地运行,无休止地尝试从...
    编程 发布于2024-11-02
  • 如何处理文本文件中的 Unicode 文本:无错误编写的完整指南
    如何处理文本文件中的 Unicode 文本:无错误编写的完整指南
    文本文件中的 Unicode 文本:无错写作综合指南从 Google 文档中提取的编码数据可能具有挑战性,尤其是当遇到需要转换为 HTML 使用的非 ASCII 符号时。本指南提供了处理 Unicode 文本并防止编码错误的解决方案。最初,在数据检索期间将所有内容转换为 Unicode 并将其写入文...
    编程 发布于2024-11-02
  • EchoAPI 与 Insomnia:结合实例进行综合比较
    EchoAPI 与 Insomnia:结合实例进行综合比较
    作为一名全栈开发人员,我知道拥有一流的工具来调试、测试和记录 API 是多么重要。 EchoAPI 和 Insomnia 是两个出色的选项,每个选项都有自己独特的特性和功能。让我带您了解这些工具,比较它们的功能和优点,给您一些实际示例,并帮助您决定何时使用 EchoAPI 或 Insomnia。 ...
    编程 发布于2024-11-02
  • 出发时间和持续时间|编程教程
    出发时间和持续时间|编程教程
    介绍 本实验旨在测试您对 Go 的时间和持续时间支持的理解。 时间 下面的代码包含如何在 Go 中使用时间和持续时间的示例。但是,代码的某些部分丢失了。您的任务是完成代码,使其按预期工作。 Go编程语言基础知识。 熟悉 Go 的时间和持续时间支持。 $ go run...
    编程 发布于2024-11-02
  • 起重面试问答
    起重面试问答
    1. JavaScript 中什么是提升? 答案: 提升是执行上下文创建阶段为变量和函数分配内存的过程。在此过程中,为变量分配了内存,并为变量分配了值 undefined。对于函数,整个函数定义存储在内存中的特定地址,并且对其的引用放置在该特定执行上下文中的堆栈上。 ...
    编程 发布于2024-11-02
  • 了解 JavaScript 中的文档对象模型 (DOM)
    了解 JavaScript 中的文档对象模型 (DOM)
    你好,神奇的 JavaScript 开发者? 浏览器提供了一个称为文档对象模型 (DOM) 的编程接口,它允许脚本(特别是 JavaScript)与网页布局进行交互。网页的文档对象模型 (DOM) 是一种分层树状结构,它将页面的组件排列成对象,由浏览器在加载时创建。借助此范例,文档...
    编程 发布于2024-11-02
  • 开始使用 SPRING BATCH 进行编程
    开始使用 SPRING BATCH 进行编程
    Introduction Dans vos projets personnels ou professionnels, Il vous arrive de faire des traitements sur de gros volumes de données. Le traite...
    编程 发布于2024-11-02
  • 使用 CSS 让您的 Github 个人资料脱颖而出
    使用 CSS 让您的 Github 个人资料脱颖而出
    以前,自定义 Github 个人资料的唯一方法是更新图片或更改名称。这意味着每个 Github 配置文件看起来都一样,自定义它或脱颖而出的选项很少。 从那时起,您可以选择使用 Markdown 创建自定义部分。您可以包括您的简历、您的兴趣和爱好,让您的个人资料反映您的身份。这是任何人在访问您的个人资...
    编程 发布于2024-11-02
  • TypeScript 实用程序类型:增强代码可重用性
    TypeScript 实用程序类型:增强代码可重用性
    TypeScript 提供内置实用程序类型,允许开发人员有效地转换和重用类型,使您的代码更加灵活和 DRY。在本文中,我们将探讨关键实用程序类型,例如 Partial、Pick、Omit 和 Record,以帮助您将 TypeScript 技能提升到新的水平。 Partial:使所有属性可选 部分实...
    编程 发布于2024-11-02
  • 电报 window.open(url, &#_blank&#);在ios上工作很奇怪
    电报 window.open(url, &#_blank&#);在ios上工作很奇怪
    我正在制作一个电报机器人,我想添加将一些信息从小型应用程序转发到聊天的选项。我决定使用 window.open(url, '_blank');在我在 iPhone 上尝试之前它一直运行良好。我没有转发,而是分享(这是一件大事,我正好需要转发一条消息)。我有一些如何处理它的想法,但它们...
    编程 发布于2024-11-02
  • 谁是前端开发人员?
    谁是前端开发人员?
    当今互联网上每个网站或平台的用户界面部分都是前端开发人员工作的结果。他们参与创建用户友好的界面,确保网站的外观和功能。但到底谁是前端开发人员呢?我简单解释一下。 用户看到的部分是前端 打开网站时首先看到的是网页界面:颜色、按钮、文字、动画。这都是由前端开发人员创建的。前端是网站或应用...
    编程 发布于2024-11-02
  • 如何使用保留的 CSS 样式将 HTML 内容另存为 PDF?
    如何使用保留的 CSS 样式将 HTML 内容另存为 PDF?
    使用 CSS 将 HTML 内容保存为 PDF在 Web 开发中,即使将内容导出为不同格式,保持视觉美观也至关重要。当尝试将 HTML 元素另存为 PDF 时,这可能会带来挑战,因为 CSS 样式可能会在转换过程中丢失。对于必须在保存的 PDF 中保留 CSS 的情况,请考虑使用以下方法:创建新窗口...
    编程 发布于2024-11-02

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3