Tabs API 简介 在 Chrome Extension 的开发中,Tabs API 是专门用于处理浏览器标签页的接口。...创建新标签页 使用 chrome.tabs.create() 方法,开发者可以轻松创建一个新的标签页并指定它的 URL。...当我们想要遍历当前打开的标签页时候,就可以将上面两个参数改成 false 即可。 监听标签页的变化 chrome.tabs.onUpdated.addListener() 允许你实时监听标签页的变化。...当标签页的 URL、标题或状态发生变化时,扩展程序可以根据具体情况采取相应的措施: chrome.tabs.onUpdated.addListener(function(tabId, changeInfo...使用这个 API 可以帮助我们整理已经打开的标签页 Tabs API 与其他 API 的结合 在 Chrome Extension 开发中,Tabs API 通常需要与其他 API 一起配合使用,以实现更强大的功能
那些曾经访问过且证明没有任何意义的网页,会因为一个“优秀的”标题而导致再次浪费我们的时间。所以为什么我们不能拉黑它们呢?...去查询后发现应该是使用 OnUpdated事件 接下来就是要去本地读取文件了。当浏览器输入地址栏时去匹配。...== 'checkURL') { checkURL(request.url); } }); chrome.tabs.onUpdated.addListener(function(tabId...Redirecting to about:blank"); chrome.tabs.update({url: 'about:blank'}); } else {...Redirecting to the original URL"); // 否则,正常访问 // chrome.tabs.update({url: url});
Alexandre Poirot :ochameau 在标记视图的事件工具提示中添加了“用户定义”徽章,以区别于“原生”事件(并可能发现Firefox不支持的事件)(#1977628)。...已解决的错误(员工除外)修复了多个错误的志愿者Alexander Kuleshov新贡献者 ( = 第一个补丁)Josh Berry 为 browser.tabs.onUpdated 事件添加了 groupId...为 browser.tabs.onUpdated API 方法添加了缺失的 groupId 属性 – 错误 1984553。...即使没有对 JSONSchema 进行此修复,groupId 属性也已在 browser.tabs.onUpdated API 事件详情中设置。...Julian Descottes :jdescottes 修复了一个会导致开发者工具崩溃的问题 (#1979448)。
今天,我们将深入探讨 Chrome 提供的 历史浏览记录 API、下载管理 API 和 存储管理 API,并通过一个实用项目带你快速上手这些功能,让你的插件不仅智能,还贴心。...() }, () => console.log('最近一天的历史记录已删除') ); 虽然 chrome.history 没有监听新增或删除历史记录的直接事件,但你可以通过配合其他...API,例如 chrome.tabs.onUpdated,间接获取用户浏览行为: chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab)...API 非常相似,大部分的能力和应用都是相通的。...:', categorized); }); 存储管理 Chrome 存储 API 提供了强大的支持,用于插件中数据的持久化和跨设备同步。
然而,由于Chrome插件需要与浏览器紧密交互,因此还需要学习一些特定的知识,比如Chrome的API、插件的生命周期、消息传递机制等。...chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { if (changeInfo.status == 'complete...URL has been set"); }); 事件系统 Chrome插件的事件系统允许插件响应各种浏览器和用户事件。...API chrome.tabs API 允许插件操作浏览器的标签页,例如创建新的标签页,关闭标签页,切换标签页,修改标签页的URL等。...以下是一个创建新标签页的示例: chrome.tabs.create({url: "http://www.example.com"}); 使用bookmarks API chrome.bookmarks
permissions:chrome 插件要调用 chrome 的接口,就需要在这里声明权限,tabs、alarms、idle 都是 chrome API。...tabs 行为:这里会用到 chrome tab 的更新(onUpdate)和激活(onActivated)两个行为。也就是 tab 里刷新页面和点击某个 tab。...chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs){ if (tabs.length...== 1){ var url = new URL(tabs[0].url); var domain = url.hostname;...; console.log(tabs); } }) } chrome.tabs.onUpdated.addListener(getCurrentTabDomin
Breaking Changes,以及诸多原本v2支持的API在v3被限制或移除,导致诸多插件无法无损过渡到v3版本。.../ chrome.tabs.connect / / popup chrome.extension.getBackgroundPage / chrome.tabs.sendMessage / chrome.tabs.connect...API"); // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated...cross.tabs.onUpdated.addListener((_, changeInfo, tab) => { if (changeInfo.status == "loading...,但是如何将这个对象传递给用户脚本,我们不能将这些变量暴露给网站本身,但是又需要将相关的变量传递给脚本,而脚本本身就是运行在用户页面上的,否则我们没有办法访问用户页面的window对象,所以接下来我们就来讨论如何保证我们的高级方法安全地传递到用户脚本的问题
内容编辑时频繁刷新后台查看效果监控数据看板时错过关键变化团队开发中代码更新不同步测试时忘记刷新导致误判如果答案是肯定的,这款插件将成为你的生产力神器!...例如:自动生成 Chrome API 调用示例提供跨浏览器兼容的实现方案给出异步操作的安全处理模式在chat模式让v3帮我们生成对应项目的readme文件,以便后面直接将readme保存在craft模式进行使用操作下面是...这个报错是什么意思?...tabId || null };} // 监听标签页激活事件chrome.tabs.onActivated.addListener((activeInfo) => { // 如果正在刷新,...chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { if (tabId === refreshState.tabId)
但是好景不长,这个插件下线了,猜测可能是因为 Chrome 升级了版本(2->3),插件没有及时更新导致的。后来我就从一些神奇的网站上找到历史版本,使用离线安装的方式继续使用,及手续香。...background 下面就是 lastTab 的核心功能区了。首先说一下简单的原理,Chrome 拓展提供了一些浏览器事件的监听,然后做出相应的处理。...chrome.action.setBadgeBackgroundColor({color: [255, 0, 0, 255]}); chrome.tabs.create({url...当一个标签页被激活时,调用 tabActivated 函数,并传递激活信息。 在 tabActivated 函数中,记录激活事件的日志信息。 检查激活信息中是否包含窗口 ID。...== 'undefined' && window.tabs[0].url !== "undefined" && window.tabs[0].url.search(regExpr) !
下面正式进入正题,如何开发 Chrome 拓展。 准备 首先你需要具备一些知识:HTML 、CSS 、 JavaScript 等。其次需要了解 Chrome 拓展开发规范和API。...、消息传递、浏览器事件监听、持久存储、定时任务和网络请求。...消息传递 监听和处理来自内容脚本(content scripts)、弹出页面(popup)和其他部分的消息: chrome.runtime.onMessage.addListener((message,...浏览器事件监听 监听浏览器的各种事件,例如标签页更新: chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { if (changeInfo.status...消息传递:与扩展的其他部分(如后台脚本 background.js、弹出页面 popup.js)进行消息传递和通信。 数据采集和分析:收集页面上的数据,进行分析或发送到后台进行处理。
// Content Script --> Background // Background -> chrome.tabs.executeScript chrome.tabs.executeScript...API"); // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated...cross.tabs.onUpdated.addListener((_, changeInfo, tab) => { if (changeInfo.status == "loading...,具体表现是当我们修改资源时并不会触发打包工具的HMR。...但是实际上这引入了另一个问题,在v3版本的Service Worker不会常驻,所以这个WebSocket链接也会随着Service Worker的销毁而销毁,是比较坑的一点,同样也是因为这一点大量的Chrome
其中的主要区别是,background js在事件触发之后会持续执行,而且在关闭所有可见视图和端口之前不会结束。值得注意的是,页面打开、点击拓展按钮都连接着相应的事件,而不会直接影响插件的加载。...(function callback) 当cookie删除或者更改导致的事件 当插件拥有cookie权限时,他们可以读写所有浏览器存储的cookie. ?.../extensions/webRequest 在具体了解这个api之前,首先我们必须了解一次请求在浏览器层面的流程,以及相应的事件触发。...chrome.tabs chrome.tabs是用于操作标签页的api,算是所有api中比较重要的一个api,其中有很多特殊的操作,除了可以控制标签页以外,也可以在标签页内执行js,改变css。...无需声明任何权限就可以调用tabs中的大多出api,但是如果需要修改tab的url等属性,则需要tabs权限,除此之外,想要在tab中执行js和修改css,还需要activeTab权限才行。
其中的主要区别是,background js在事件触发之后会持续执行,而且在关闭所有可见视图和端口之前不会结束。值得注意的是,页面打开、点击拓展按钮都连接着相应的事件,而不会直接影响插件的加载。...(function callback) 当cookie删除或者更改导致的事件 当插件拥有cookie权限时,他们可以读写所有浏览器存储的cookie..../extensions/webRequest 在具体了解这个api之前,首先我们必须了解一次请求在浏览器层面的流程,以及相应的事件触发。...chrome.tabs chrome.tabs是用于操作标签页的api,算是所有api中比较重要的一个api,其中有很多特殊的操作,除了可以控制标签页以外,也可以在标签页内执行js,改变css。...无需声明任何权限就可以调用tabs中的大多出api,但是如果需要修改tab的url等属性,则需要tabs权限,除此之外,想要在tab中执行js和修改css,还需要activeTab权限才行。
default_title:显示的标题 permissions:拥有的权限 tabs:监听浏览器tab切换事件 options_ui background: service_worker:设置打开独立页面...chrome.action.onClicked.addListener(function () { chrome.tabs.create({ url: chrome.runtime.getURL...API and the chrome.windows API by providing a user interface to manage tabs and windows...通过使用标准的文档对象模型(DOM),它能够读取浏览器访问的网页的详细信息,可以对打开的页面进行更改,还可以将DOM信息传递给其父级插件。...页面 chrome.tabs.create({ url: 'https://www.baidu.com/s?
扩展(Extension) 指的是通过调用 Chrome 提供的 Chrome API 来扩展浏览器功能的一种组件,工作在浏览器层面,使用 HTML + Javascript 语言开发。...chrome扩展程序将后台网页分为两种类型: 1.持续运行的后台网页 2.事件页面 是否持久存在是事件页面与后台网页之间的根本区别。...信息数据在内容脚本、弹窗页面以及事件页面之间传递是一个扩展程序最重要的部分。...使用 chrome.* API 消息传递,主要使用了 Chrome 浏览器的内置 chrome 对象进行。...result: 0 }; // 发送消息 chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) { chrome.tabs.sendMessage
基于Chrome扩展的浏览器可信事件与网页离线PDF导出 Chrome扩展是一种可以在浏览器中添加新功能和修改浏览器行为的软件程序,我们可以基于Manifest规范的API实现对于浏览器和Web页面在一定程度上的修改...这实际上是由于浏览器的安全策略导致的,由于浏览器为了加强安全性,限制了一些可能会影响用户隐私的API,只有在用户的直接操作下才能运行,也就是相当于执行Copy命令只有在用户主动激活上下文中才可以正常触发...那么此时我们就需要在扩展中查询当前活跃的标签页,然后需要过滤下当前活跃标签的协议,例如chrome://协议的连接我们不会进行处理,然后在符合条件的情况下我们将tabId传递下去。...权限声明,将事件传递到Inject Script中执行,可以发现即使是在声明了权限的情况下,document.execCommand("paste")返回的结果仍然是false,并且无法触发我们绑定的事件...在扩展程序中实际上提供了chrome.downloads.download方法,这个方法可以直接下载文件到设备中,并且虽然传递数据参数名字为url,但是实际上并不会受到链接长度/字符数的限制,通过传递Base64
一、事件概述 2020年10月,美团安全运营平台发现流量中存在恶意JavaScript请求,信息安全部收到告警后立即开始应急处理,通过对网络环境、访问日志等进行排查,最终锁定恶意请求由Chrome浏览器安装恶意插件引起...2.2 分析攻击路径 根据告警中涉及的触发页面、相关网络环境信息,排除流量劫持、XSS攻击等情况,猜测可能的原因为浏览器插件或恶意软件导致。...接下来为script对象的src属性赋值,在addHandler方法中,cl这个参数由elem传递过来,其中包含src字符串,通过cl[0].split('>').slice(2, 3)拿到关键字src...Chrome后台API,在常规沙箱环境中可能会出现无法调用API而中途报错退出。...分析中还发现,很多恶意行为需要触发特定事件才能进入到构造恶意Payload流程,如触发chrome.tabs.onUpdated等。
自制浏览器插件:实现网页内容高亮、自动整理收藏夹功能 以 Chrome 扩展 Manifest V3 为例,构建一个实用型插件:在网页上高亮选中的内容,并自动整理浏览器收藏夹。...list:list.concat([msg.data]) await chrome.storage.local.set({[key]:next}) } }) chrome.tabs.onUpdated.addListener...chrome.scripting.executeScript({target:{tabId},files:['content.js']}) chrome.tabs.sendMessage(tabId...大量书签操作建议分批执行并设置简单的速率限制。 历史访问时间依赖 chrome.history,隐私模式与部分场景可能不可用。...需改用 tabs.executeScript 采用轻量适配层封装差异,优先最小权限与主流程可用 安装与发布 开发模式:Chrome 打开 chrome://extensions,启用开发者模式,加载已解压的扩展
扩展(Extension) 指的是通过调用 Chrome 提供的 Chrome API 来扩展浏览器功能的一种组件,工作在浏览器层面,使用 HTML + Javascript 语言开发。...chrome扩展程序将后台网页分为两种类型: 持续运行的后台网页 事件页面 是否持久存在是事件页面与后台网页之间的根本区别。...接下来,我们的扩展要灵活地完成各种功能,最重要的就是互相间的通信! 信息数据在内容脚本、弹窗页面以及事件页面之间传递是一个扩展程序最重要的部分。...使用 chrome.* API 消息传递,主要使用了 Chrome 浏览器的内置 chrome 对象进行。打开浏览器,试一下,chrome 对象其实包含了非常多的功能: ?...使用 chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {}) 则能正确选中当前打开的标签页。