【教程向】从零开始创建浏览器插件(四)探索Chrome扩展的更多常用API

探索Chrome扩展的更多常用API

在Chrome扩展开发中,除了最基础的API外,Chrome还提供了一系列强大的API,允许开发者与浏览器的各种功能进行交互。本文将介绍其中几个常用的API,并提供详细的示例代码帮助您开始利用这些API。
在这里插入图片描述

书签API(bookmarks

Chrome的bookmarks API允许扩展访问和修改用户的书签。以下是一个使用bookmarks API创建新书签的示例:

示例代码:创建新书签

// background.js 或者其他可以运行API调用的脚本
chrome.bookmarks.create({
    'parentId': "1",
    'title': "My Favorite Site",
    'url': "https://www.example.com/"
}, function(newBookmark) {
    console.log("添加的书签: ", newBookmark);
});

在上面的例子中,parentId指定了要在哪个书签文件夹下创建新书签,titleurl是新书签的名称和链接。

通知API(notifications

notifications API使扩展可以显示通知给用户。下面的示例展示了如何创建一个简单的通知:

示例代码:显示通知

// background.js 或者其他适合的地方
chrome.notifications.create({
    type: 'basic',
    iconUrl: 'icon.png',
    title: '提醒',
    message: '这是一个通知测试!',
    buttons: [{ title: '按钮1'}, {title: '按钮2'}],
    priority: 0
}, function(notificationId) {
    console.log("显示通知: ", notificationId);
});

上下文菜单API(contextMenus

contextMenus API允许扩展向Chrome浏览器的上下文菜单(右键菜单)添加自定义项。下面的代码示例向上下文菜单添加了一个新项,当用户在网页上右键时可见:

示例代码:创建上下文菜单项

chrome.runtime.onInstalled.addListener(function() {
    chrome.contextMenus.create({
        "id": "sampleContextMenu",
        "title": "使用我的扩展处理",
        "contexts": ["selection"]
    });
});

chrome.contextMenus.onClicked.addListener(function(info, tab) {
    if (info.menuItemId == "sampleContextMenu") {
        console.log("你选择了一些文本:" , info.selectionText);
        // 在这里添加你想对选中文本执行的操作
    }
});

在这个示例中,我们首先通过chrome.contextMenus.create方法创建了一个新的上下文菜单项,只有当用户选中页面上的文本时才会显示。然后,我们使用chrome.contextMenus.onClicked监听器来响应用户的点击操作,当用户点击我们的菜单项时,我们简单地记录了选择的文本。

标签页API(tabs

tabs API让扩展可以创建、修改和移动浏览器标签页。以下是使用此API查询当前激活标签页的示例:

示例代码:查询当前激活标签页

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    var currentTab = tabs[0]; // 在这里拿到当前的标签页
    console.log(currentTab.url); // 输出当前标签页的网址
});

这个API非常有用,比如在需要从当前标签页抓取信息或对当前页面执行脚本的场景中。

存储API(storage

Chrome扩展的storage API提供了一个便利的方式来存储和检索扩展数据。与其他浏览器存储解决方案(如localStorage)相比,storage API功能更强大,支持异步存取,并且对数据的大小限制更加宽松。

示例代码:存储和检索数据

// 存储数据
chrome.storage.sync.set({'key': 'value'}, function() {
    console.log("保存成功");
});

// 检索数据
chrome.storage.sync.get('key', function(result) {
    console.log("检索到的数据:", result.key);
});

通过chrome.storage.sync,数据不仅被保存在本地,同时也会与用户的Google账号同步(如果登录的话),因此可以跨设备共享数据。

消息传递

Chrome扩展提供了一种强大的消息传递系统,允许不同的扩展组件(如背景脚本、内容脚本、弹出页面等)之间进行通信。这对于创建具有多个组件并需要在这些组件之间共享数据的扩展非常有用。

示例代码:内容脚本与背景脚本之间的消息传递

// background.js
chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        if (request.greeting === "hello") {
            sendResponse({farewell: "goodbye"});
        }
    });

// content.js
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
    console.log(response.farewell);
});

在这个例子中,内容脚本发送一条消息到背景脚本,并得到背景脚本的响应。

结论

通过深入了解和运用tabsstorage和消息传递等API,可以大大提升你的Chrome扩展程序的功能和用户体验。这只是Chrome扩展API众多功能中的一小部分,但足够看出Chrome扩展的强大和灵活性。继续探索这些API,你将能够构建出真正强大的扩展,满足用户的各种需求。

记住,在使用这些API时,需要在你的manifest.json文件中声明相应的权限。一步一步来,你将成为Chrome扩展开发的高手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spring】初识 Spring AOP(面向切面编程)

目录 1、介绍AOP 1.1、AOP的定义 1.2、AOP的作用 1.3、AOP的核心概念及术语 2、AOP实现示例 3、EnableAspectJAutoProxy注解 1、介绍AOP 1.1、AOP的定义 AOP(Aspect Orient Programming),直译过来就是面向切面编程,AOP 是一…

大型模型技术构建本地知识库

使用大型模型技术构建本地知识库是一个复杂的过程,涉及到数据科学、机器学习和软件工程等多个领域的知识。以下是构建本地知识库的一般步骤。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.需求分析: 确定知…

软件工程经济学--期末复习资料

软件工程经济学--期末复习资料 前言第一章 绪论第二章 软件工程经济学基础第三章 软件的成本管理与定价分析第四章 软件工程项目评价方法与经济效果评价第五章 软件生产函数、效益分析及不确定性分析第六章 软件工程项目进度计划的制定结尾总结 前言 软件工程经济学&#xff0…

书生作业:XTuner

作业链接: https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md xtuner: https://github.com/InternLM/xtuner 环境配置 首先,按照xtuner的指令依次完成conda环境安装,以及xtuner库的安装。 然后,我们开始尝试…

VBA信息获取与处理第四节:获取唯一非重复值返回数组的代码

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

scanf留下的那一片云彩

【题目描述】 给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如,OOXXOXXOOO的得分为1200100123。 输入第一行表示有n个字符串,后续是n行字…

【matlab基础知识代码】(十八)无约束最优化问题

min下面的x称为优化向量或者是决策变量 匿名函数法 >> f(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2)); x0[0; 0]; [x,b,c,d]fminsearch(f,x0), x 0.6111 -0.3056 b -0.6414 c 1 d 包含以下字段的 struct: iterations: 72 funcCount: 137 algor…

Hive SQL-DML-insert插入数据

Hive SQL-DML-insert插入数据 1. 插入静态数据 可以直接插入具体的值到Hive表中: INSERT INTO TABLE tablename (column1, column2, column3) VALUES (value1, value2, value3),(value4, value5, value6),...;2. 插入查询结果 将一条查询的结果直接插入到另一个表中…

软件工程基础知识,软考选择题的重点

本篇知识来自:软件设计师考试同步辅导 ---考点。。。。。,钟彩华 博伟玉 清华出版社,那本书。仅供学习。以下理解都是本人自己认为的。仅供参考。 本书的第132页,第五章知识。 目录 软件工程叙述 软件的生命周期 软件过程 软…

android studio配置Http Proxy

1、问题描述: Error:Unable to tunnel through proxy. Proxy returns “HTTP/1.1 400 Bad Request” 解决:HTTP Proxy设置 1.File→Settings…→System Settings → HTTP Proxy → Auto-detect proxy settings”; 2.勾选下方“Automatic prox…

Codigger:Vim的革新者,提升开发体验和功能性

深知Vim在编程和文本编辑领域的卓越地位,因此,在设计和开发过程中,Codigger始终将保留Vim的核心功能和高度定制能力作为首要任务。然而,Vim的复杂性和高度定制性也让很多新用户望而却步。为了降低这种使用门槛,Codigge…

常用Linux命令详细总结

一、文档编辑、过滤、查看命令 1、cp 复制文件和目录 -a 复制文件并保持文件属性 -d 若源文件为链接文件,则复制链接文件属性而非文件本身 -i 覆盖文件前提示,如果不要提示,在命令前加上\ -r 递归复制,通常用于目录的复制 …

【bug记录】清除僵尸进程,释放GPU显存

目录 1. 为什么会出现这种情况?2. 解决方案方法一:使用 fuser 命令方法二: 3. 小贴士 在进行深度学习或其他需要GPU支持的任务时,我们有时会发现虽然没有可见的进程在执行,但GPU资源却意外地被占用。这种情况往往会阻碍…

揭秘LLMOps,高效开发大型语言模型

大家好,随着人工智能(AI)的蓬勃发展,一个新兴领域语言模型运维(LLMOps)正逐渐成为关注的焦点。LLMOps专注于对大型语言模型(LLMs),例如OpenAI的GPT系列,进行全…

ESP32重要库示例详解(一):EEPROM之Preferences库

1. 了解EEPROM 在嵌入式系统开发中,断电后晚能存储少量数据是常见需求。EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,即使断电数据也不会丢失。ESP32的EEPROM模拟功能利用闪存空间&#x…

信创应用软件之办公流版签

信创应用软件之办公流版签 文章目录 信创应用软件之办公流版签概述流式文件版式文件电子签章厂商金山办公永中-永中Office中标-中标普华Office福昕科技e签宝法大大 概述 办公流版签软件主要包括办公中常用到的流式软件、版式软件以及电子签章。 版式文件和流式文件都是文书类…

时间范围交集查询

业务场景: 数据库中时开始时间与结束时间,筛选数据条件将这两个字段(开始时间、结束时间)糅合成一个字段,并且是范围筛选。 数据库字段: 筛选条件: 数据分析 全部包含(子集&#…

WorkPlus im(即时通讯)集成平台助力政企数字化转型升级

随着互联网技术的不断发展,企业内部通讯软件已经成为企业日常运营中不可或缺的一部分。企业IM(即时通讯)和移动门户作为企业内部通讯软件的关键组成部分,为企业提供更加高效、便捷的通讯方式,提高了企业的运营效率。 针…

共绘财富管理新蓝图,ATFX赞助出席拉美峰会,引领家族资本新航向

全球新兴市场中,拉丁美洲以其非凡活力与潜力格外引人注目,成为全球资本竞相追逐的价值洼地。ATFX自2019年开设墨西哥办事处以来,持续深耕拉美市场已成为头部品牌。自4月行业资深人士Ergin Erdemir掌舵拉美业务后,掀起市场营销新浪…

队列的实现以及队列如何实现栈

一、队列的定义 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为 队头 …