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

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

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

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

本文旨在介绍什么是内容脚本以及它们如何工作。还有一个演示项目,其中将讨论 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]删除
最新教程 更多>
  • 使用Node.js构建自己的自定义Slackbot
    使用Node.js构建自己的自定义Slackbot
    本教程向您展示了如何使用node.js和助手模块构建自定义的松弛机。 这种方法将常规的松弛消息视为命令,与更常见的Slash命令方法不同。 [2 本教程需要熟悉JavaScript,Node.js和Slack Tresminology(团队,频道,机器人,集成)。必须安装node.js和npm。 ...
    编程 发布于2025-03-23
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-03-23
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-03-23
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-03-23
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-03-23
  • 响应迅速的网站在4中的表现如何?
    响应迅速的网站在4中的表现如何?
    [2 概述 到2024年,移动设备将占所有互联网流量的一半以上。对于许多人来说,笔记本电脑或台式计算机不再是使用智能手机和平板电脑探索网络的必要工具。现在,无论是用于生产力,社交媒体还是电子商务,互联网都是移动优先。由于这种变化,响应迅速的Web设计对于确保网站工作并在各种屏幕和设备...
    编程 发布于2025-03-23
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-03-23
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-03-23
  • 如何使用PHP创建对URL友好的用户名?
    如何使用PHP创建对URL友好的用户名?
    使用PHP创建forl-frim友好的用户名:综合指南在Web开发的上下文中,创建既可以读取和搜索引擎又可以启用的用户友好的URL至关重要。相同的原理适用于用户名,通常构成用户配置文件和其他动态内容的组成部分。在基于PHP的网站上处理用户名时,可能会遇到确保这些用户名适用于URL中的用户名的挑战。...
    编程 发布于2025-03-23
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-03-23
  • 如何将文件存储在mysql:blob类型和插入语句中?
    如何将文件存储在mysql:blob类型和插入语句中?
    在mySQL中存储文件:列类型和插入语句在数据库管理领域中,问题出现:我们如何在mySQL数据库中存储文件?当通过Web服务远程将文件插入数据库时​​,要考虑的关键因素是适合文件数据的适当列类型。关于列类型,MySQL提供特定的BLOB(二进制大对象)数据类型,旨在存储二进制数据(例如文件)。这些...
    编程 发布于2025-03-23
  • 如何创建jQuery函数来控制CSS的可见性?
    如何创建jQuery函数来控制CSS的可见性?
    创建jQuery函数来操纵CSS可见度 $('#element')。可见(); //使元素可见 $('#element')。ivisible(); //使元素看不见 $('#element')。vistibilityToggle(); //切换可见...
    编程 发布于2025-03-23
  • 如何克服在.NET中提取动态生成的HTML的挑战?
    如何克服在.NET中提取动态生成的HTML的挑战?
    动态html生成使用.NET动态生成的HTML代码的挑战是许多人的一项难以捉摸的任务。 While the System.Windows.Forms.WebBrowser class and the COM interface mshtml.HTMLDocument from the Microso...
    编程 发布于2025-03-23
  • 如何动态更改网页?
    如何动态更改网页?
    [2
    编程 发布于2025-03-23
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    在Microsoft Visual C 中,Microsoft consions用户strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate st...
    编程 发布于2025-03-23

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

Copyright© 2022 湘ICP备2022001581号-3