谷歌浏览器扩展v3版本总结

chrome扩展,如何调试background.service_worker 对应的js文件 阅读详情

前言

前几年使用过谷歌浏览器扩展v2,然后今天想编写一个扩展发现了很多问题,然后想编写一篇文章进行总结一下,v3跟比v2有挺多差距的,具体的大家可以去看看官网文档

开始

开始之前先介绍几个网站,谷歌扩展官网(翻墙-英文),谷歌扩展中文网

项目结构

注意事项一(service-worker使用)

service-worker.js 就是 background.js 它必须在根目录

ps:如果你想看它的运行情况,需要单独为扩展插件打开控制台(扩展 - 三个点 - 审查弹出内容)

 注意事项二(manifest.json配置)

{
    "name": "Getting Started Example",
    "version": "1.0",
    "description": "Build an Extension!",
    "manifest_version": 3,
    "permissions": [
      "declarativeContent", 
      "storage", 
      "activeTab"
    ],
    "externally_connectable": {
      "matches": ["*://*.xxxxxx.com/*"]
    },
    "background": {
      "service_worker": "service-worker.js"
    },
    "content_scripts": [
      {
        "matches": ["<all_urls>"],
        "js": ["js/jquery-1.8.3.js", "js/content.js"]
      }
    ],
    "web_accessible_resources": [
        {
            "matches": ["<all_urls>"],
            "resources": [ "js/inject.js", "js/jquery-1.8.3.js"]
        }
    ],
    "action":{
        "default_popup": "popup.html",
        "default_icon": "img/1.png",
        "default_title": "Latest Covid Report"
    },
    "icons": {
      "16": "img/1.png",
      "32": "img/1.png",
      "48": "img/1.png",
      "128": "img/1.png"
    }
  }
   

注意事项三(如何发送请求)

content.js

chrome.runtime.sendMessage(
        {
         type: 'post',
         url: "https://xxxx.com/api/users/login",
         data: {
             url: 'test'
         }
        },
        function response(res) {
            console.log("回调...")
            console.log(res)
        }
    )

service-worker.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    console.log("addListener...")
    console.log(request)
        switch(request.type) {
            case 'get':
                fetch(request.url)
                    .then(function(response) { sendResponse(response.json()) })
                .then(function(json) { sendResponse(json) })
                .catch(function(error) { sendResponse(null) });
            break;
            case 'post':
                fetch(request.url, {
                    method: 'POST',
                    mode: 'cors',
                    credentials: 'include',
                    headers: {
                        'Content-Type': 'application/x-www-form-urlencoded'
                    },
                    body: JSON.stringify(request.data)
                })
                    .then(function(response) { 
                        console.log(response)
                        sendResponse(response.json())
                    })
                    .then(function(json) {
                        console.log(json)
                        sendResponse(json)
                    })
                    .catch(function(error) {
                        console.log(error)
                        sendResponse(null)
                    });
            break;
            // 你可以定义任意内容,使用sendResponse()来返回它
            case 'test':
                sendResponse({'msg': 'test'});
            break;
    }
});

注意事项四(如何注入js)

content.js

// 可以操作当前页面中的DOM
$(document).ready(function() {

    console.log("---加载content.js---");
 
    // 注入inject.js
    injectCustomJs();
 
});

function injectCustomJs() {
    let jsPath = 'js/inject.js';
 
    var temp = document.createElement('script');
    temp.setAttribute('type', 'text/javascript');
    // 获得的地址类似:chrome-extension://ihcokhadfjfchaeagdoclpnjdiokfakg/js/inject.js
    temp.src = chrome.runtime.getURL(jsPath);
    temp.onload = function() {
        // 执行完后移除掉
        this.parentNode.removeChild(this);
    };
    // 挂载
    document.head.appendChild(temp);
}

inject.js

// 可以访问当前页面中的js
$(document).ready(function() {
    console.log("---inject.js---");
    console.log(window);
});

总结

其实我使用得很浅,所以也没啥好总结的,多看文档多百度!

别再踩坑了!手把手教你将Chrome插件从Manifest V2升级到V3(附完整代码对比) 本文详细解析了Chrome插件从Manifest V2升级到V3的完整流程,包括核心变更点、代码对比和实战技巧。重点介绍了Service Worker替代后台页面、权限系统重构、网络请求处理等关键差异,帮助开发者避免常见陷阱,顺利完成迁移。文章还提供了调试技巧和渐进式迁移策略,确保升级过程平稳高效。 阅读详情

相关推荐

ESP32 CAM安装配置 第四部份:通过使用ESPHome的方式ESP32 Cam加到HomeAssistant

这些包括 aec_value, aec2, ae_level, agc_gain, gain_ctrl, bpc, wpc, raw_gma, lenc, hmirror, dcw, colorbar 等。这些参数的可能值和具体效果会根据你的摄像头硬件和 ESPHome 的版本有所不同。在 ESPHome 中配置 ESP32 Cam 时,每个参数的可能值取决于具体的功能和支持范围。值的范围是 0 到 63,其中 0 是最差质量,63 是最佳质量。horizontal: 水平校正的强度,通常是一个数字值。

weixin_42895252的博客 3364

Chrome扩展及应用开发 入门笔记(五)消息机制

1.Content script 给 popup.js发消息(二者之间通信) content.js function test() { chrome.extension.sendMessage({cmd: "fromcontentscript"}, function (response) { alert( "fromcontentscript"); if (re

我的E家 8781

c转c++——蓝桥杯

在这里,`int &i` 表示 `i` 是一个整型的引用变量,而不是一个拷贝,这意味着在循环中对 `i` 的修改会影响到数组 `arr` 中对应位置的值。arr则是需要遍历的数组。一、为啥要转C++:之前只学过C语言,然后为了蓝桥杯苦哈哈敲了C好久,偶然听了别人的意见去看了一下C++后发现简直太香了——C++不像C要把底层逻辑自己敲出来,而是可以直接调用STL函数库(比如排序,C语言可能要敲个几十行代码C++直接用调用sort函数就可以了),而且C++完全兼容C语言,里面的语法全部可以用C替换。

smwymzqbyl的博客 2045

chrome.runtime.sendMessage 回调函数参数为undefined

chrome.runtime.sendMessage 回调函数参数为undefined chrome.runtime.sendMessage的回调函数默认是同步的,而且超时后直接执行,返回undefined,如果要异步执行,必须在处理函数中return true //background.js chrome.runtime.onMessage.addListener(function (request,sender,callback) { // 异步方法 return true; /

henryzyk的博客 3199

OpenBullet2 学习研究2-Conditions条件之KeyCheck的使用

上一节我们学习了如何安装Openbullet2以及如何新建一个配置,最后我们再配置里面新建一个Http的请求块,帮助我们发送了第一个请请求。这一节我们来学习check块。当我们发送请求以后,请求返回的内容是否是我们想要的,或者请求发送正确没有,这个我们怎么判断呢?这个时候就要用到check块了。

958

【愚公系列】《AIGC辅助软件开发》041-如何使用 AI技术提升工作效率:AI辅助软件架构师实践

在数字化转型的浪潮中,软件架构师作为技术团队的核心,承载着系统设计与架构优化的重要责任。然而,随着项目复杂度的增加和技术环境的变化,架构师面临着前所未有的挑战。幸运的是,人工智能(AI)技术的迅猛发展为这一行业带来了新的机遇,帮助架构师提升工作效率、优化决策过程,并改善团队协作。本文将深入探讨AI如何辅助软件架构师的实际工作,具体分析AI在需求分析、架构设计、代码生成、测试和优化等环节的应用。

愚公智库 15万+

CHROME插件开发之·web页面与插件后台通信(chrome.runtime.sendMessage => chrome.runtime.onMessageExternal.addListener)

使用页面直接通信到后台前需要先设置权限,在manifest中添加"externally_connectable": {“matches”: ["* ????/.example.com/"]} 注意:externally_connectable里的匹配不能使用完全通配符,必须写根域名否则会报错 后台接收消息 chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { consol

slongzhang的博客 9206

专访高性能计算专家赵开勇:无人机/机器人开发实战,如何优化深度学习?

从能够自主飞行的无人机,到能和小朋友玩物体识别等游戏的机器人,极客们对智能设备追求没有止境。除了轻巧的体积、超长的续航,更重要的是要有一个智能的“大脑”,来实现人类能够想得到的人机交互,或者智能化的自主决策和行为动作,毫无疑问强大的深度学习能力不可或缺。那么,拒绝束缚人类想象力的嵌入式智能设备,其开发工作需要什么样的环境和工具?开发者进行相关开发的可行思路是什么?近日,优快云记者就此专访了智能设...

happytofly的博客 3509

Chrome插件开发【消息通信】

本文详细介绍了Chrome插件内部通信的两种方式:短连接和长连接通信。短连接通信使用一次性消息API如chrome.runtime.sendMessage()和chrome.tabs.sendMessage(),适用于简单消息交互;长连接通信则通过chrome.runtime.connect()建立持久连接,使用Port对象进行持续通信。文章分别从内容脚本与其他脚本、其他脚本之间、其他脚本与内容脚本三种场景,结合具体代码示例(如content-script.js与background.js的交互)演示了通信

zheshiyangyang的博客 1975

Orange3实战教程:文本挖掘---标注语料库地图

Oreange3,文本挖掘,标注语料库地图用于在二维投影中可视化、聚类文档,并用关键词进行标注。

err2008的专栏 818

AI处理器组合

编号0-3的处理器处于同一个链路中,编号4-7的处理器处于另外一个链路中,不通链路中的处理器不能通信,如下图所示。- 如果申请处理器个数为1,则选择同一链路,剩余可用的处理器数量为1个的最佳,其次是剩余3个的为次佳,然后是剩余2个,最后是剩余4个。输出为组合列表,当array=[0, 1, 4, 5, 6, 7] ,num=1时,输出为[[0], [1]]- 如果申请处理器个数为2,则选择同一链路剩余可用的处理器数量2个的为最佳,其次是剩余4个,最后是剩余3个。任务申请1个处理器。

面试高手的博客 1万+

谷歌浏览器扩展V3版本遇到的坑

转折来了,就在我觉得这个问题无解之后,正在跟领导说明这个无法解决的bug时候,我突然想到,我为什么要在安装的监听里去写,安装只有一次啊,不放在安装的监听里是不是可以。代码大概长这样,但是有一个问题,页面闲置一会就service Worker就会失效,导致接口请求不了了,整个插件就用不了了。没想到,还真是,把安装的监听去掉就能完美的解决这个问题了,没想到困扰我这么多天的问题被如此简单的方法解决了。后来果然不失效了,但是又产生了新的问题,浏览器只要关闭,重新再打开,service worker依然会失效。

王金鑫的博客 906

【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件

本文介绍了如何将C#游戏开发中的代码从单个.cs文件拆分到多个.cs文件中,以提升代码的可维护性和可读性。文章演示了在Visual Studio中创建Hero类和ShowInfo类的具体步骤:通过右键项目名添加新建类,将原有代码分别剪切到对应的类文件中,并自动生成命名空间。拆分后需要在Program.cs中通过"using"指令引用这些类,最后通过运行测试验证功能正常。这种模块化代码组织方式能有效解决单一文件代码过长、结构混乱的问题。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1136

V3版本的谷歌浏览器扩展程序开发

首先建立一个文件夹,然后创建manifest.json文件(扩展程序的配置性文件),使用方法是直接打开扩展程序管理文件,把文件夹直接拖进去。

之度的博客 1008

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

谷歌浏览器版本和Manifest V2、V3的关系是怎样的?

Manifest V2 是谷歌浏览器早期使用的扩展程序清单文件格式,长期被多个版本支持。Manifest V3 则是较新版本使用的格式,旨在提升安全性、隐私性和性能。

zengliguang的专栏 790

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

谷歌游览器插件 这些扩展程序已停用,因为它们已不再受支持

摘要:谷歌Chrome浏览器推行新标准Manifest V3,禁用Ublock Origin等Manifest V2扩展,禁止 Chrome 自动更新

充满知识🎉 1272

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持

谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持 原因及处理办法

yeyuningzi的博客 9657

谷歌逐步淘汰 V2 插件,广告拦截不能用了?

本文是《最全面的浏览器教程》第九篇,介绍目前扩展生态的问题。

PeterJXL的博客 3871

谷歌沙拉查词插件用不了显示:此扩展程序未遵循 Chrome 扩展程序的最佳实践,因此已无法再使用

解决谷歌沙拉查词插件用不了的问题

m0_70440160的博客 6907

Chrome浏览器扩展被禁用如何解决?

谷歌Chrome浏览器将逐步禁用ManifestV2扩展,本文提供临时解决方案:需更新Chrome至138.x版本,通过修改5个实验性flag(启用Temporarily unexpire M137 flags和Allow legacy MV2 extensions,禁用3个MV2淘汰相关flag),重启浏览器后可暂时继续使用旧版扩展。但需注意这是临时方案,存在风险,建议尽快将扩展升级至ManifestV3版本。更多技术文章可访问作者博客rn.berlinlian.cn。

m0_74462934的博客 2072

屏蔽优快云广告插件 - Chrome

谷歌优快云去广告插件,使用最新版谷歌扩展API v3,支持最新版本谷歌浏览器

Dily_Su的博客 1981

Chrome插件

谷歌插件工具更新:Chrome浏览器将逐步淘汰Manifest V2标准,要求使用更高内核版本(Chrome 124+)。目前国产浏览器可能无法安装最新插件,解决方案包括更新Chrome或下载历史版本。官网提供各类插件下载,开发者将持续更新兼容版本。欢迎留言交流使用心得,共同探讨前端开发工具。

学全栈、大前端方向,就找前端早间课 735

Advanced REST client的安装

1. 下载得到Advanced-REST-client_v3.1.9.zip: 链接:http://pan.baidu.com/s/1c0vUnJi 密码:z34d 这里要说明下,目前谷歌浏览器是不允许安装非谷歌商店的应用,所有我们需要通过如下的方法才能安装成功!! 1.1 解压Advanced-REST-client_v3.1.9.zip到当前文件夹,得到Advanced-REST-client...

weixin_43078114的博客 495

安装xdebug-helper插件

1.将下载好的xdebug helper-1.4.3.crx文件,改名为“xdebug helper-1.4.3.rar” 2.将压缩好的“xdebug helper-1.4.3.rar”解压到指定目录,例如:C:\Users\Administrator\Desktop 3.打开谷歌扩展应用管理,在谷歌浏览器输入chrome://extensions/ 4.加载...

qq_23069485的博客 1847

火牛协议php网页版源码_阿狸子PHP商品订单系统V2.9豪华版源码(竞价单页源码,分销商城)...

阿狸子PHP商品订单系统V2.9豪华版源码(竞价单页源码,分销商城),非常不错,喜欢的朋友快来下载吧!环境说明1、PHP5.3-5.6版本,不支持PHP72、mysql5.1及以上3、PHP须开启curl,GD2,scandir4、最佳服务器运行环境为Linux+Apache/Nginx,Windows+IIS次之5、后台操作推荐使用谷歌浏览器,IE7及以下兼容性不佳历史更新最近更新:1)应求资源...

weixin_39632212的博客 843
上一篇: 从0开始使用IDEA搭建java REST api架构
下一篇: 如何触发‘isTrusted = true‘点击事件
An_s
博客等级 码龄10年 665粉丝 363原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值