chrome 订阅
Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于称作Chrome的网络浏览器GUI(图形使用者界面)。软件的beta测试版本在2008年9月2日发布,提供50种语言版本,有Windows、OS X、Linux、Android、以及iOS版本提供下载。 [1]  谷歌将在谷歌浏览器Chrome上推出“小程序”增强型网页应用( Progressive Web Apps,简称 PWA)。 [2]  2018年11月,Google宣布,将从2018年12月份开始在其Chrome 71网络浏览器上移除持续提供滥用使用体验的网站上的所有广告。 [3]  受2020年新冠肺炎疫情影响,谷歌于2020年3月暂停向Chrome浏览器系统增加新功能,以保证软件尽可能平稳运行 [4]  。 展开全文
Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于称作Chrome的网络浏览器GUI(图形使用者界面)。软件的beta测试版本在2008年9月2日发布,提供50种语言版本,有Windows、OS X、Linux、Android、以及iOS版本提供下载。 [1]  谷歌将在谷歌浏览器Chrome上推出“小程序”增强型网页应用( Progressive Web Apps,简称 PWA)。 [2]  2018年11月,Google宣布,将从2018年12月份开始在其Chrome 71网络浏览器上移除持续提供滥用使用体验的网站上的所有广告。 [3]  受2020年新冠肺炎疫情影响,谷歌于2020年3月暂停向Chrome浏览器系统增加新功能,以保证软件尽可能平稳运行 [4]  。
信息
软件语言
C++、汇编语言、Javascript
软件大小
202 MB
开发商
Google
软件授权
BSD许可证,谷歌浏览器服务条款
软件名称
Google Chrome
更新时间
2020-05-24
软件版本
83.0.4103.61 (最新) [5]
官    网
http://www.google.cn/chrome/
软件平台
Windows,MAC OS X,Linux,Android,iOS
排版引擎
Webkit,Blink [7]
支持语言
53种语言 [6]
Google Chrome软件简介
Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。 Google Chrome的特点是简洁、快速。GoogleChrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,Google Chrome基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。另有手机版的Chrome浏览器,于2012年发布了Chrome浏览器移动版,提供IOS系统、安卓系统以及Windows Phone系统的Chrome浏览器,在保持浏览器原有特点的情况下,实现了多终端使用浏览器,具有共享收藏历史信息等功能,是手机浏览器的一次巨大突破。随着Android系统的份额不断扩大而市场占有率不断飙升。·Chrome浏览器基于开源引擎WebKit、Blink,其中包含谷歌Gears。·Chrome提供了浏览器扩展框架,可以制作与Adobe-AIR类似的混合应用。·包含V8 Javascript虚拟机,这个多线程的虚拟机可以加速Javascript的执行。·具备隐私浏览模式,可以让用户无需在本地机器上登录即可使用,这个功能与微软IE8中的Incognito类似。·浏览器将内置防止“网络钓鱼“及恶意软件功能。Google曾在自己的官方博客中宣布在Beta版Chrome25 中将加入网络语音API(Web SpeechAPI),让用户在某些嵌入了JavaScript的网页中可以更方便地使用语音指令、听写等功能。同时新版本在内容安全策略标头(Content Security Policy header)方面也有所改进,开发者可以创建网页、资源白名单,以此来提升浏览器的安全性。 Google Chrome,又称谷歌浏览器,是一个由Google(谷歌)公司开发的免费网页浏览器。“Chrome”是化学元素“铬”的英文名称;过去也用Chrome称呼浏览器的外框。本软件的程式码是基于其他开放源代码软件所撰写,包括WebKit和Mozilla,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。软件的名称是来自于又称作“Chrome”的网络浏览器图形使用者界面(GUI)。不易崩溃  Chrome最大的亮点就是其多进程架构,保护浏览器不会因恶意网页和应用软件而崩溃。每个标签、窗口和插件都在各自的环境中运行,因此一个站点出了问题不会影响打开其它站点。通过将每个站点和应用软件限制在一个封闭的环境中这种架构,这进一步提高了系统的安全性。速度快使用WebKit引擎。WebKit简易小巧,并能有效率的运用存储器,对新开发者来说相当容易上手。Chrome具有DNS预先截取功能。当浏览网页时,“Google Chrome”可查询或预先截取网页上所有链接的IP地址。目标网页。Chrome具有GPU硬件加速:当激活GPU硬件加速时,使用“Google Chrome”浏览那些含有大量图片之网站时可以更快渲染完成并使页面滚动时不会出现图像破裂的问题。2013年4月份,Google宣布称将为Chrome浏览器开发新的自主浏览器引擎Blink,在最新的Chrome开发版本中,Blink已经正式现身。 [7]  几乎隐身说Chrome的界面简洁不足以说明其简洁程度。Chrome几乎不像是一款应用软件,屏幕的绝大多数空间都被用于显示用户访问的站点,屏幕上不会显示Chrome的按钮和标志。Chrome的设计人员表示,他们希望用户忘记自己在使用一款浏览器软件,他们的目标基本上实现了。搜索简单Chrome的标志性功能之一是Omnibox--位于浏览器顶部的一款通用工具条。用户可 以在Omnibox中输入网站地址或搜索关键字,或者同时输入这两者,Chrome会自动执行用户希望的操作。Omnibox能够了解用户的偏好,例如, 如果一名用户喜欢使用PCWorld网站的搜索功能,一旦用户访问该站点,Chrome会记得PCWorld网站有自己的搜索框,并让用户选择是 否使用该站点的搜索功能。如果用户选择使用PCWorld网站的搜索功能,系统将自动执行搜索操作。标签灵活Chrome为标签式浏览提供了新功能。用户可以“抓住”一个标签,并将它拖放到单独的窗口中。用户可以在一个窗口中整合多个标签。Chrome在启动时可以使用用户喜欢的某个标签的配置,其它浏览器需要第三方插件才能够提供这一功能。更加安全黑名单(Blacklists):“Google Chrome”会定期地更新防止网络钓鱼和恶意软件的黑名单,并在用户试图浏览可能造成电脑损害的网站时予以警告。这项服务也可通过使用其他的免费自由应用程序接口(API)“GoogleSafe Browsing API” 来取得。在更新维护这些黑名单的同时,Google也会通知被列入的网站,以避免网站持有者本身不知道网站存有恶意软件。沙箱(Sandboxing):“Google Chrome”中的每一个标签页都是一个沙箱(sandbox),以防止“恶意软件破坏用户系统”或“利用标签页影响其他标签页”。遵守最小权限原则,每个动作的权限都会被限制,仅能运算而无法写入文件和从敏感区域读取文件(如我的文档、桌面)。沙盒小组(Sandbox Team)是一种表示他们“使用了现有的运行程序限制,并让这些限制变成一座监狱”,例如在其中一个标签页运作的恶意软件,将无法窃取信用卡号码、干扰鼠标运作,或告诉系统在启动时运行某个程序,并且恶意软件会在标签页关闭时立即中止。插件(Plugins):插件通常并没有统一的标准,且无法像标签页般沙盒化。这些通常需要运行在浏览器本身的安全等级或更高的等级。为了降低被攻击的风险,插件是独立运行的。从5.0版本起,“Google Chrome”内置Adobe Flash Player以确保使用的为最新版本降低被攻击的风险。其后在9.0版本将Flash播放器内置在沙盒中独立运行。这项技术是Chrome安全性进步的一座里程碑。对Windows XP用户特别重要,因为它是平台上唯一提供Flash嵌入沙盒运行的浏览器。从8.0版本起,“Google Chrome”内置在沙盒中独立运行的PDF阅读器。多进程(Multiprocessing):能容许多个程序同时运行而互不影响,每个网页标签独立于窗口程序存在,当资源过高或崩溃时,不会因为一个停顿而整个程序当掉。任务管理器(Task Manager):非常有特色的工具,用户可以查看哪些网站占用了最多的内存、下载流量和CPU资源,有利于管理各个标签页与插件,也便于用户终止恶意操作。诈骗和恶意程序保护:当“Google Chrome”侦测到浏览网站可能有害时,便会发出实时警告。浏览器会将造访网址的一部分传送给Google,以了解该网址是否列在诈骗与恶意网站清单中。(网络钓鱼及恶意软件的侦测功能)。自动更新(Auto-updates):为确保受到最新版安全性更新的保护,“Google Chrome”会定期检查更新,以确保更新永远为最新版本。更新检查可确保会使用最新版的安全性功能与修正程序,浏览器自动更新新的版本,不需要用户采取任何动作,更新后会在下一次启动中自动使用。 HTML5测试(3张) CSS3测评Acid1及Acid2均顺利通过。早先,在Acid3中只能获得78分,最新的测试版已达到100分,部分WebKit核心浏览器已取得100分通过。CSS3 Selectors Test中578项全部通过。HTML5测评支持W3C最新WEB协议HTML5且表现良好支持HTML5视频编号格式有H.264OggTheoraWebM
收起全文
精华内容
下载资源
问答
  • chrome
    千次阅读
    2021-12-11 20:58:42

    今天写的这篇文章是我的一个朋友在面试的时候遇到的问题,今天我特地来讲解一下chrome和chromium的区别。
    首先chrome虽然是我们用的最多的浏览器,但是它并不是来源的览器。如果我们想在chrome的功能上来开发自己的浏览器的话,我们只能使用chromiun,因为他是开源的。chrome和chromium都是谷歌开发它们有区别呢?下面我们就从界面、开/闭源、功能、性能、使用条款和更新方面来讲解一下。

    界面

    chrome和chromium用户界面几乎一摸一样,但是还是有一些差异的。比如chrome的系统标题和边框是被默认禁用的,而chromium是默认开启的。另外chrome地址栏里有分享功能,我们可以分享网站,但是chromium没有这个功能。界面的细微差别主要是这两个浏览器面向的用户是不一样的,一般来说使用chrome的用户是普通用户,用它来浏览网页使用,而使用chromium大部分是极客、开发人员和体验新功能的的用户。

    开/闭源

    chromium是完全开源的,任何人都可以按照自己的想法去使用并修改代码。这也是许多浏览器都是基于chromium开发的。另外chrome在chromium代码种增加了自己的代码。这对于大部分用户来说无关紧要,但是对于一些极客和开发人员来说这很有必要,对于他们来说chromium是一个透明度很高的浏览器,任何人都可以无限制的对它进行修改。

    功能差异

    谷歌基于商业目的并不希望其他公司开发的浏览器和chrome有相似甚至一样的功能和能力。所以谷歌在chromium种将谷歌特有功能删除了。下面我列出了这两个浏览器功能上的差异:

    chromechromium
    有同步功能无同步功能
    支持媒体编解码器要手动安装编解码器

    针对同步功能,即使在chromium的基础上开发了同步功能,但是无法使用由谷歌支持的登录和同步。从技术上来说chromium不包括widevine内容解密模块,所以需要手动安装编解码器。

    更新

    chrome易于安装,并且安装后会自动更新。但是chromium安装并不简单,即使在Windows上,chromium安装和更新也很十分麻烦。在 Linux 上安装 chromium和Windows完全不一样。在常见的Linux版本上经常把它打包成一个沙盒式snap应用。如果打算用终端安装并希望能从APT库中获取到它,那么它又是一个snap应用。并且使用snap软件包可能会遇到和自定义桌面主题兼容的问题,而且snap应用启动时间更长。如果你要更新chromium就得手动更新。

    隐私

    chrome会追踪使用信息和与浏览有关的信息。并且谷歌推出的chrome api可以让网站检测用户什么时候空闲什么时候不空闲,这是一个很严重的隐私问题。相比之下,chromium在隐私方面的表现比chrome好得多。

    性能

    考虑到高级网站应用和资源密集型JavaScript,如果一个网页浏览器的性能不好,当打开许多活动标签时体验就会很糟。一些开发人员使用JetStream 2和Speedometer 2两个流行基准对chrome和chromium处理各种任务和响应能力的性能进行估计,发现chrome要优于chromium。

    更多相关内容
  • Google Chrome 浏览器

    万次下载 热门讨论 2011-09-27 18:12:21
    CSDN下载频道是Google Chrome浏览器官方指定下载站点,可以确保您下载到免费的最新版本无插件绿色软件。 免费体验高效办公还有积分相送你还不快来试试! 注意:已经安装过Chrome浏览器的用户必须要先卸载浏览器和...
  • chrome浏览器字体编码插件下载

    千次下载 热门讨论 2017-03-15 17:43:26
    由于新版chrome浏览器(77以下版本)不能设置字体编码,我找了一个插件和大家一起分享,插件安装的方式自行搜索。 高版本请移步 https://download.csdn.net/download/King_flag/11998490 如果没有积分,请加群...
  • Axure RP Extension for Chrome 官方绿色版

    千次下载 热门讨论 2015-03-19 17:15:25
    Axure RP Extension for Chrome是原型设计工具Axure RP的Chrome浏览器插件。目前版本为0.6.2。 因为在线安装需要访问Google Chrome在线商店,有时候会访问不了。所以提供一个离线版本进行安装。 安装方法: 1、...
  • chrome 调用本地exe

    热门讨论 2014-08-18 08:43:45
    1,chrome 浏览器本身不支持直接调用exe,但可以使用url protocol handler 调用exe 2,直接双击exe_chrome.reg 安装注册表 3,test.html 要在运行在容器里(tomcat,resin XXXX),本地直接打开是执行不了的,我...
  • Chrome扩展安装包Postman 绿色版

    万次下载 热门讨论 2014-12-10 15:39:52
    收集到的可用的Postman的可用安装包,安装包内有使用说明。很多人无法在Chrome商店安装,下载的又无法使用的这个应该可以解决了。
  • ActiveX-for-Chrome_v1.5.0.7

    热门讨论 2016-03-17 16:59:14
    ActiveX-for-Chrome_v1.5.0.7
  • posman-4.7.0-Crx4Chrome.com

    千次下载 2017-04-24 10:19:06
    postman4.70 后台api开发神器。get,post,put,delete等调用方式.并支持自动生成代码.postman使用教程:http://blog.csdn.net/qazwsxpcm/article/details/70578600
  • chrome缓存清除扩展程序,通过js清除chrome缓存的api演示
  • 传送门:chrome扩展官方文档(中文版) 原文地址:What’s new in Chrome extensions Chrome扩展有什么新功能 发布于 2021 年 2 月 25 日,星期四 • 更新于 2022 年 2 月 17 日,星期四 经常检查这个页面来了解...

    传送门:chrome扩展官方文档(中文版)

    原文地址:What’s new in Chrome extensions

    Chrome扩展有什么新功能

    发布于 2021 年 2 月 25 日,星期四 • 更新于 2022 年 2 月 17 日,星期四

    经常检查这个页面来了解关于 Chrome 扩展平台的变化,它的文档和相关的策略或其他变化。

    Chrome 100:本地消息端口使 service worker 保持活跃

    2022 年 2 月 9 日

    在扩展的 service worker 中使用 chrome.runtime.connectNative() 连接到本地消息主机,只要端口是打开的,该 service worker 就会一直处于活动状态。

    Chrome 100:omnibox.setDefaultSuggestion() 支持 promise 和 callback

    2022 年 2 月 8 日

    omnibox.setDefaultSuggestion() 方法现在返回一个期约或接受一个回调,以允许开发人员确定建议何时被正确设置。

    Chrome 100:i18n.getMessage() 支持扩展 service worker

    2022 年 1 月 27 日

    chrome.i18n.getMessage() API 现在在扩展 service worker 上下文中得到支持。

    chrome99:Canary 中的 match_origin_as_fallback

    2022 年 1 月 5 日

    内容脚本现在可以指定 match_origin_as_fallback 键来注入到与匹配 frames 相关的 frames 中,包括带有 about:data:blob:filesystem: URLs 的 frames。有关详细信息,请参阅 内容脚本 文档。

    Chrome 99:扩展 service worker 支持的文件:计划中的 Canary

    (原题:extension service worker support for file: schemes in Canary)

    2021 年 12 月 30 日

    基于 service worker 的 Manifest V2 和 Manifest V3 扩展现在可以使用 Fetch API 来请求文件 file: 协议的 URLs。访问文件 file: 协议的 URLs 仍然需要用户启用 ‘Allow access to File URLs’ 的扩展在chrome://extensions 页面。

    Chrome 99:promise 支持 Canary 中的消息 APIs

    2021 年 12 月 28 日

    Promise 支持已经添加到 tabs.sendMessage, runtime.sendMessageruntime.sendNativeMessage ,可用于 Manifest V3 的扩展构建。

    文档更新:Chrome Web Store 审查文档

    2021 年 12 月 10 日

    增加了一个新的参考页面,提供了 Chrome Web Store 审查过程的概述,并解释了如何处理开发人员的程序策略执行。

    文档更新:检查违规故障排除更新

    2021 年 10 月 27 日

    故障排除 Chrome Web Store 违规页面已经更新,它为开发人员提供了更详细的指导,常见的拒绝原因。

    Chrome 96:将 promise 支持扩展到 27 个以上的 APIs

    2021 年 10 月 1 日

    这个版本包含了比以前任何版本更多的承诺更新。更新包括通用和 Chrome OS 特定扩展 APIs。展开以下部分以了解详细信息。

    扩展 APIs
    。。。

    Chrome OS APIs
    。。。

    Chrome 96:动态 content scripts

    2021 年 9 月 24 日

    chrome.scripting API 现在支持注册、更新、注销,以及在运行时获得 content scripts 列表。以前,content scripts 只能在扩展的 manifest.json 中静态声明,或使用 chrome.scripting.executeScript() 在运行时通过编程方式注入。

    文档更新:Manifest V2 支持时间表

    2021 年 9 月 23 日

    Manifest V2 到 V3 的过渡时间表已经在这篇博文中宣布,并且发布了一个更详细的时间表页面。

    Chrome 96: declarativeNetRequestWithHostAccess权限

    2021 年 9 月 20 日

    新的 declarativeNetRequestWithHostAccess 权限允许扩展使用 chrome.declarativeNetRequest API在扩展具有主机权限的站点上。这也允许使用 webRequestwebRequestBlocking 和站点特定主机权限的现有Manifest V2 扩展迁移到 chrome.declarativeNetRequest API,而不需要用户批准新的权限。

    Chrome 95:将脚本直接注入到页面

    2021 年 9 月 2 日

    chrome.scripting API 的 executeScript() 方法现在可以直接将脚本注入到页面的主内容区(原文:main word)。以前,扩展只能直接注入到扩展的孤立世界(原文:isolated)中。了解孤立世界的更多信息,请参阅有关 content scripts 的文档。

    chrome95:promise 支持 Storage API

    2021 年 8 月 30 日

    用于 chrome.storage API 的 Manifest V3 版本的方法,现在返回 promise。

    策略更新:两步验证强制执行

    2021 年 8 月 4 日

    2021 年 6 月 29 日发布的政策更新博客更新了两步核查部署时间表。

    Chrome 94:声明性的网络请求静态规则集更改

    2021 年 7 月 28 日

    chrome.declarativeNetRequest 现在支持指定最多50个静态规则集(MAX_NUMBER_OF_STATIC_RULESETS),并一次启用最多 10 个规则集(MAX_NUMBER_OF_ENABLED_STATIC_RULESETS)。

    Chrome 93:跨源隔离支持

    2021 年 7 月 12 日

    Manifest V2 和 Manifest V3 扩展现在都可以选择 跨源隔离。这个特性限制了哪些跨源资源可以加载扩展的页面,并允许使用低级 web 平台特性,如 SharedArrayBuffer 。选择将需要从 Chrome 95 开始。

    策略更新:开发者程序策略更新

    2021 年 6 月 29 日

    Chrome Web Store 开发者计划策略已经更新,澄清了欺骗性安装策略、垃圾邮件和重复内容策略。这个更新还包括一个发布在 Chrome Web Store 新的两步验证要求。请 阅读这篇博文 了解更多信息。

    博客文章:Manifest V3 中的扩展 actions

    2021 年 6 月 23 日

    Chrome 扩展的 Chrome.browserActionchrome.pageActions API 多年历史,但 Manifest V3 用一个通用的 chrome.actions API 替换了两者。这篇文章探讨了这些 API 的历史,以及在 Manifest V3 中发生了哪些变化。阅读这篇文章。

    博客文章:介绍 chrome.scripting

    2021 年 6 月 8 日

    chrome.scripting API是一个专注于脚本的新的 Manifest V3 API。在这篇文章中,我们将深入探究这种改变的动机,并更深入地了解它的新功能。阅读这篇文章。

    Chrome 92:模块 service worker 支持

    2021年4月13日

    Chrome 现在在 service worker 中支持 JavaScript 模块。在 manifest 中指定一个模块:

    "background":{
      “service_worker: "script.js”,
      “type”:“module”
    }
    

    这将以 ES 模块的形式加载工作脚本,它允许您在工作脚本中使用 import 关键字来导入其他模块。

    Chrome 91:chrome.action.getUserSettings()

    2021 年 4 月 2 日

    新的 chrome.action.getUserSettings() 方法允许扩展确定用户是否将扩展固定在主工具栏上。

    Chrome 90:chrome.scripting.removeCSS()

    2021 年 2 月 10 日

    新的 chrome.scripting.removeCSS() 方法允许扩展删除以前通过 chrome.scripting.insertCSS() 插入的CSS。它取代 chrome.tabs.removeCSS()

    Chrome 90:从 script.execuescript() 返回 promise

    2021 年 2 月 24 日

    chrome.script.execuescript() 现在支持返回 promise。如果脚本执行的结果值是 promise ,Chrome 会等待 promise 结束并返回它的结果值。

    Chrome 90:chrome.script.execuescript() 结果包括 frameId

    2021 年 1 月 27 日

    chrome.script . execuescript() 返回的结果现在包括 frameId 。frameId 属性指示结果来自哪个 frame,当扩展注入多个 frame 时,可以很容易地将结果与单个 frame 关联起来。

    Chrome 89:管理标签组的新API

    2021 年 1 月 14 日

    新的 chrome.tabGroups API 和在 chrome.tabs 的新功能使选项卡允许扩展读取和操作选项卡组。需要 Manifest V3。

    Chrome 89:web 可访问资源的自定义权限

    2020 年 12 月 23 日

    Manifest V3 中的 Web 可访问资源定义已经改变,允许扩展根据请求者的来源或扩展 ID 限制资源访问。

    博客贴子:扩展 Manifest 转换器

    2021 年 4 月 28 日

    Chrome 扩展团队有开源的 “扩展 Manifest 转换器”,这是一个 Python 工具,可以自动将扩展转换到Manifest V3 的一些机械方面。查看公告博客文章并从 GitHub 获取。

    Chrome 88:Manifest V3 的通用可用性

    2021 年 1 月 19 日

    Manifest V3 是扩展平台的重大更新;有关新特性和更改特性的摘要,请参阅 Manifest V3 概述。扩展现在可能会继续使用 Manifest V2,但这将在不久的将来被淘汰。我们强烈建议您对任何新的扩展使用 Manifest V3,并尽快开始将现有的扩展迁移到 Manifest V3。

    最后更新:2022 年 2 月 17 日,星期四 · 改进文章

    展开全文
  • chrome 扩展插件API

    千次阅读 2021-06-22 11:47:01
    使用 chrome.accessibilityFeatures 管理chrome的可访问功能,该API依赖于ChromeSetting prototype of the type API 来读取和设置个人辅助功能,为了读取功能状态,需要请求accessibilityFeatures.read权限。...

    稳定的API

    api解释
    accessibilityFeatures使用 chrome.accessibilityFeatures 管理chrome的可访问功能,该API依赖于ChromeSetting prototype of the type API 来读取和设置个人辅助功能,为了读取功能状态,需要请求accessibilityFeatures.read权限。插件需要请求accessibilityFeatures.modify权限来修改功能状态。需要注意的是, accessibilityFeatures.readaccessibilityFeatures.modify两个权限不等价
    action可以使用 chrome.action 设置扩展在菜单栏的图标
    alarms可以使用chrome.alarms 来设置定期执行或者未来某个时间执行的程序
    bookmarks可以使用chrome.bookmarks 进行书签创建、管理或其他方式操作书签。也可以查阅Override Pages,你可以用它来创建一个自定义的书签管理器页面
    browserAction(MV2)使图标出现在chrome导航栏右侧,除了它的图标,一个browserAction可以设置一个tooltip、一个badge、或一个popup
    browsingDatachrome.browsingData可以从用户的本地配置文件中删除浏览数据
    certificateProvider使用此API将证书暴露给需要进行TLS认证的平台
    commands可以为自己插件的动作设置快捷键,比如打开浏览器或者向该插件发送命令
    contentSettingschrome.contentSettings可以改变控制网站是否可以使用cookies、JavaScript和插件等功能的设置。简单来说,contentSettings可以代替全局在每个网站的基础上定制Chrome的表现
    contextMenus可以使用chrome.contextMenus 添加一些选项到chrome的上下文菜单中。你可以选择你的上下文菜单添加适用于哪些类型的对象,如图像、超链接和页面
    cookieschrome.cookies 用于查询和修改 cookie 并在更改时收到通知
    debuggerchrome.debugger API服务可以代替 remote debugging protocol远程调试协议,使用chrome.debugger 把一个或多个标签与与网络接口关联,调试JavaScript,改变DOM和CSS,等等。使用Debuggee tabId来锁定标签与sendCommand和route事件,再通过回调事件返回tabId
    declarativeContentchrome.declarativeContentAPI 可根据页面内容执行操作,无需获得读取页面内容的权限
    declarativeNetRequest(Chrome 84)chrome.declarativeNetRequestAPI 用于通过指定声明性规则来阻止或修改网络请求。这允许扩展程序修改网络请求而无需拦截它们并查看其内容,从而提供更多隐私
    desktopCapture可用于捕获屏幕、单个窗口或选项卡内容的桌面捕获 API
    devtools.inspectedWindowchrome.devtools.inspectedWindow与被检查窗口交互:获得被检查页面的标签ID,在被检查窗口的上下文中评估代码,重新加载页面,或获得页面中的资源列表。
    devtools.networkchrome.devtools.network检索有关开发者工具在网络面板中显示的网络请求的信息
    devtools.panelschrome.devtools.panels整合你的扩展到开发者面板中:创建自己的面板、访问现有面板、创建侧边栏
    documentScanchrome.documentScan发现和检索附属纸质文件扫描仪的图像
    downloadschrome.downloads以编程方式启动、监控、操作和搜索下载
    enterprise.deviceAttributeschrome.enterprise.deviceAttributes可读取设备属性。注意:此 API 仅适用于由企业策略强制安装的扩展程序
    enterprise.hardwarePlatform(Chrome 71)chrome.enterprise.hardwarePlatform用来获取浏览器运行的硬件平台的制造商和型号。注意:该API仅适用于由企业策略安装的扩展
    enterprise.networkingAttributes(Chrome 85)chrome.enterprise.networkingAttributes用于读取有关您当前网络的信息的 API。注意:此 API 仅适用于企业策略强制安装的扩展
    enterprise.platformKeyschrome.enterprise.platformKeys用于生成硬件支持的密钥并为这些密钥安装证书。证书将由平台管理,可用于 TLS 身份验证、网络访问或通过 chrome.platformKeys 的其他扩展
    eventschrome.events命名空间包含 API 调度事件使用的常见类型,以便在发生有趣的事情时通知您
    extensionchrome.extensionAPI 具有可供任何扩展页面使用的实用程序。它支持在扩展与其内容脚本之间或扩展之间交换消息,如Message Passing所述。
    extensionTypeschrome.extensionTypesAPI 包含 Chrome 扩展的类型声明
    fileBrowserHandlerchrome.fileBrowserHandler用于扩展 Chrome 操作系统文件浏览器。例如,您可以使用此 API 使用户能够将文件上传到您的网站
    fileSystemProviderchrome.fileSystemProvider用于创建文件系统,可从 Chrome 操作系统上的文件管理器访问
    fontSettingschrome.fontSettings用于管理 Chrome 字体设置
    gcmchrome.gcm使app和扩展程序能够通过Google Cloud Messaging Service 发送和接收消息
    historychrome.history可以用浏览器浏览记录做交互,可以添加、删除和查询浏览器历史记录中的 URL。要使用您自己的版本覆盖历史记录页面,请参阅Override Pages
    i18nchrome.i18n在整个app或扩展程序中实现国际化。
    identitychrome.identity用于获取OAuth2访问令牌
    idlechrome.idle用于检测机器空闲状态的改变
    input.imechrome.input.ime 用于为 Chrome 操作系统实现自定义 IME。这允许您的扩展程序处理击键、设置组合和管理候选窗口。
    instanceIDchrome.instanceID用于访问实例 ID 服务。
    loginState(Chrome 78)chrome.loginState用于读取和监控登录状态
    managementchrome.management提供管理已安装及运行中的扩展程序/应用程序列表的方法。它对于覆盖内置新标签页的扩展特别有用
    notificationschrome.notifications使用模板创建丰富的通知,并在系统托盘中向用户显示这些通知
    omnibox允许您使用 Google Chrome 的地址栏(也称为多功能框)注册关键字。
    pageAction(MV2)chrome.pageAction将图标放置在 Google Chrome 主工具栏中的 API,位于地址栏的右侧。页面操作表示可以在当前页面上执行的操作,但不适用于所有页面。页面操作在不活动时显示为灰色
    pageCapturechrome.pageCapture将选项卡保存为 MHTML
    permissionschrome.permissions在运行时(不是安装时)请求声明的可选权限,因此用户了解为什么需要这些权限并只授予那些必要的权限
    platformKeyschrome.platformKeys用于访问平台管理的客户端证书。如果用户或策略授予权限,扩展可以在其自定义身份验证协议中使用此类证书。例如。这允许在第三方 VPN 中使用平台管理的证书(请参阅 chrome.vpnProvider)
    powerchrome.power用来覆盖系统的电源管理功能
    printerProviderchrome.printerProvider公开打印管理器使用的事件来查询由扩展控制的打印机,查询它们的功能并将打印作业提交给这些打印机
    printing(Chrome 81)chrome.printing将打印作业发送到 Chromebook 上安装的打印机
    printingMetrics(Chrome 79)chrome.printingMetrics用于获取有关打印使用情况的数据
    privacychrome.privacy用于控制 Chrome 中可能影响用户隐私的功能的使用。这个 API 依赖于ChromeSetting prototype of the type API来获取和设置 Chrome 的配置。
    proxychrome.proxy用于管理 Chrome 代理设置。该 API 依赖于ChromeSetting prototype of the type API来获取和设置代理配置。
    runtimechrome.runtime用于检索background页、返回manifest的详细信息以及侦听和响应app或扩展生命周期中的事件。您还可以使用此 API 将相对路径转换为绝对路径
    scripting(Chrome 88MV3+)chrome.scripting在不同环境中执行脚本
    search(Chrome 87)chrome.search通过默认提供方进行搜索
    sessionschrome.sessions用来从浏览会话中查询和恢复标签页和窗口
    storagechrome.storage存储、检索和跟进用户数据
    system.cpusystem.cpu可查询 CPU 元数据
    system.displaysystem.display可查询显示元数据
    system.memorychrome.system.memory
    system.storagechrome.system.storage用来查询存储设备信息,并在可移动存储设备被连接和拆卸时发出通知。
    tabCapturechrome.tabCapture用来与标签媒体流交互。
    tabGroups(Chrome 89MV3+)chrome.tabGroups用来与浏览器的标签分组系统交互,您可以使用此 API 在浏览器中修改和重新排列选项卡组。要对选项卡进行分组和取消分组,或查询分组中的选项卡,请使用 chrome.tabs
    tabschrome.tabs用来与标签系统做交互,可以用来在浏览器中创建、修改和重排标签页
    topSiteschrome.topSites用来访问显示在新标签页上的热门站点(即访问量最大的站点),不包括用户自定义的快捷方式。
    ttschrome.tts用来播放合成的tts,也可以查看允许扩展实现语音引擎的ttsEngineAPI
    ttsEnginechrome.ttsEngine用与扩展实现tts引擎,如果你的扩张注册了这个API,当任何扩展程序或 Chrome 应用程序使用 tts API 生成语音时,它将接收要说的话语和其他参数的事件。然后,您的扩展程序可以使用任何可用的网络技术来合成和输出语音,并把报告状态通过事件发送给回调函数
    typeschrome.types 包含Chrome 的类型声明
    vpnProviderchrome.vpnProvider用来实现一个 VPN 客户端。
    wallpaperchrome.wallpaper用来更改 ChromeOS 壁纸
    webNavigationchrome.webNavigation以接收关于飞行中的导航请求状态的通知
    webRequestchrome.webRequest可以观察和分析流量并拦截、阻止或修改进行中的请求
    windowschrome.windows用来与浏览器窗口交互。您可以使用此 API 在浏览器中创建、修改和重新排列窗口。

    beta API

    name描述
    declarativeWebRequest(MV2)此 API 已弃用。请查看 declarativeNetRequest API。使用 chrome.declarativeWebRequest API 拦截、阻止或修改正在进行的请求。它比 chrome.webRequest API 快得多,因为您可以注册在浏览器而不是 JavaScript 引擎中评估的规则,从而减少往返延迟并提高效率

    Dev API

    name描述
    automationchrome.automation允许开发人员访问浏览器的自动化(可访问性)树。该树类似于 DOM 树,但仅暴露页面的语义结构。它可用于通过检查名称、角色和状态、侦听事件以及在节点上执行操作来以编程方式与页面交互
    processeschrome.processes 可以与浏览器的进程交互。
    signedInDeviceschrome.signedInDevices获取使用与当前配置文件相同的帐户登录 chrome 的设备列表

    平台应用程序 API

    name描述
    app.runtime使用 chrome.app.runtime API 来管理应用程序生命周期。应用运行时管理应用安装,控制事件页面,可以随时关闭应用。
    app.window使用 chrome.app.window API 创建窗口。 Windows 有一个带有标题栏和大小控件的可选框架。它们与任何 Chrome 浏览器窗口无关。有关这些选项的演示,请参阅窗口状态示例。
    appviewTag使用 appview 标签在您的 Chrome 应用程序中嵌入其他 Chrome 应用程序。(见用法)。
    audio(Dev channel)提供 chrome.audio API 以允许用户获取有关连接到系统的音频设备的信息并对其进行控制。此 API 目前仅在 ChromeOS 的自助服务终端模式下可用。
    bluetooth使用 chrome.bluetooth API 连接到蓝牙设备。所有函数都通过 chrome.runtime.lastError 报告失败。
    bluetoothLowEnergychrome.bluetoothLowEnergy API 用于使用通用属性配置文件 (GATT) 与蓝牙智能(低功耗)设备进行通信。
    bluetoothSocket使用 chrome.browser API 与与当前应用程序和 Chrome 配置文件关联的 Chrome 浏览器交互。
    browser使用 chrome.browser API 与与当前应用程序和 Chrome 配置文件关联的 Chrome 浏览器交互。
    clipboard(Dev channel)提供 chrome.clipboard API 以允许用户访问剪贴板的数据。这是 chromeos 平台应用程序的临时解决方案,直到开放网络替代方案可用。一旦开放网络解决方案可用,它将被弃用,这可能是在 2017 年第四季度。
    fileSystem使用 chrome.fileSystem API 创建、读取、导航和写入用户的本地文件系统。使用此 API,Chrome 应用程序可以读取和写入用户选择的位置。例如,文本编辑器应用程序可以使用 API 来读取和写入本地文档。所有失败都通过 chrome.runtime.lastError 通知。
    hid使用 chrome.hid API 与连接的 HID 设备进行交互。此 API 提供从应用程序上下文中访问 HID 操作的权限。使用此 API,应用程序可以充当硬件设备的驱动程序。此 API 产生的错误通过设置 runtime.lastError 并执行函数的常规回调来报告。在这种情况下,回调的常规参数将是未定义的
    mdns使用 chrome.mdns API 通过 mDNS 发现服务。这包括 NSD 规范的一部分功能:http://www.w3.org/TR/discovery-api/
    mediaGalleries使用 chrome.mediaGalleries API 从用户的本地磁盘(经用户同意)访问媒体文件(音频、图像、视频)。
    serial使用 chrome.serial API 读取和写入连接到串行端口的设备。
    socket使用 chrome.socket API 通过 TCP 和 UDP 连接通过网络发送和接收数据。注意:从 Chrome 33 开始,这个 API 被弃用,取而代之的是 sockets.udpsockets.tcpsockets.tcpServer API。
    sockets.tcp使用 chrome.sockets.tcp API 通过 TCP 连接通过网络发送和接收数据。此 API 取代了先前在 chrome.socket API 中找到的 TCP 功能。
    sockets.tcpServer使用 chrome.sockets.tcpServer API 来创建使用 TCP 连接的服务器应用程序。此 API 取代了先前在 chrome.socket API 中找到的 TCP 功能。
    sockets.udp使用 chrome.sockets.udp API 通过 UDP 连接通过网络发送和接收数据。此 API 取代了先前在“套接字”API 中找到的 UDP 功能。
    syncFileSystem使用 chrome.syncFileSystem API 在 Google Drive 上保存和同步数据。此 API 不适用于访问存储在 Google Drive 中的任意用户文档。它为离线和缓存使用提供特定于应用程序的可同步存储,以便可以跨不同客户端使用相同的数据。有关使用此 API 的更多信息,请阅读管理数据。
    system.network使用 chrome.system.network API
    usb使用 chrome.usb API 与连接的 USB 设备交互。此 API 提供从应用程序上下文中访问 USB 操作的权限。使用此 API,应用程序可以充当硬件设备的驱动程序。此 API 产生的错误通过设置 runtime.lastError 并执行函数的常规回调来报告。在这种情况下,回调的常规参数将是未定义的。
    webviewTag使用 webview 标签通过网络主动加载来自网络的实时内容并将其嵌入到您的 Chrome 应用程序中。您的应用程序可以控制 webview 的外观并与 web 内容交互、在嵌入式网页中启动导航、对其中发生的错误事件做出反应等(请参阅用法)。
    展开全文
  • Chrome 插件开发

    千次阅读 2020-04-06 09:31:30
    Chrome 插件开发 参考 官方文档:https://developer.chrome.com/extensions 中文文档(360浏览器):http://open.chrome.360.cn/extension_dev/overview.html websocket 小示例:...

    chrome 插件的控制能力

    除了支持传统的一切 web API、JavaScript API 以外,chrome插件额外支持以下API(chrome.xxx):

    • 浏览器窗口(chrome.window)
    • tab标签(chrome.tabs)
    • 书签(chrome.bookmark)
    • 历史(chrome.history)
    • 下载(chrome.download)
    • 网络请求(chrome.webRequest)
    • 各类事件监听?
    • 自定义右键菜单(chrome.contextMenus)
    • 开发者工具扩展(chrome.devtool)
    • 插件管理(chrome.extension)

    chrome 插件的主要模块

    1. manifesh.json

    {
    	 // 清单文件的版本,必须是2
    	"minifest_version": 2,
    	”name“: "demo",
    	"version": "1.0.0",
    	"description": "简单的chrome插件demo",
    	"icons": {
    		"16": "img/icon.png",
    		"48": "img/icon@48x.png",
    		"128": "img/icon@128x.png",
    	},
    	// 会一直常驻在后台运行的js文件或html页面。有 2 种指定方式:
    	// ①指定js,那么会自动生成一个背景页
    	"background": {
    		"scripts": ["js/background.js"]
    	},
    	// ②指定html页面,可以通过script标签引入多个js文件
    	// "background": {
    	//		"page": "background.html"
    	// },
    	"browser_action": {
    		"default_icon": "img/icon.png",
    		// (可选)鼠标悬停在右上角图标上的标题
    		"default_title": "这是一个示例chrome插件",
    		"default_popup": "popup.html"
    	},
    	// 对某些特性网页才显示的图标
    	"page_action": {
    		"default_icon": "img/icon.png",
    		"default_title": "这是page action",
    		"default_popup": "popup.html"
    	},
    	// 需要注入页面的JS
    	"content_scripts": [
    		{
    			// ["http://*/*", "https://*/*"] 表示匹配这两个协议的所有地址
    			// "<all_urls>" 表示匹配所有地址
    			"matches": ["<all_urls>"],
    			// 多个JS按顺序注入
    			"js": ["js/util.js", "js/content.js"],
    			// CSS的注入容易影响全局,一定要谨慎!
    			"css": ["css/custom.css"],
    			// 代码注入的时间,可选值:"document_start", "document_end", "document_idle",最后一个表示页面空闲时,默认document_idle
    			"run_at": "document_start"
    		},
    		// content_script 可配置多个规则
    		{
    			"matches": ["*://*/*.png", "*://*/*.jpg", "*://*/*.gif", "*://*/*.bmp"],
    			"js": ["js/show-image-size.js"]
    		}
    	],
    	// 申请权限
    	"premissions": [
    		"contextMenus",
    		"tabs",
    		"notifications",
    		"webRequest",
    		"storage",
    		"http://*/*", // 可以通过executeScript或者insertCSS访问的网站???
    		"https://*/*", // 可以通过executeScript或者insertCSS访问的网站???
    	],
    	// 普通页面能够直接访问的插件资源列表,如果不设置是无法直接访问的???
    	"web_accessible_resources": ["js/inject.js"],
    	// 插件主页,广告位
    	"homepage_url": "http://github.com/...",
    	// 覆盖浏览器默认页
    	"chrome_url_overrides": {
    		// 覆盖浏览器默认的新标签页
    		"newtab": "newTab.html"
    	},
    	// 插件配置页
    	"options_ui": {
    		"page": "options.html",
    		// 添加官方的默认样式,推荐使用
    		"chrome_style": true
    	},
    	//
    	"omnibox": { "keyword": "go" },
    	//
    	"default_locale": "zh_CN",
    	// devtools 页面入口??注意只能指向一个HTML文件,不能是JS文件
    	"devtools_page": "devtools.html"
    }
    
    

    2. background

    • 常驻在后台一直运行的脚本或页面,生命周期最长,随着浏览器打开而打开,随着浏览器关闭而关闭。通常把需要一直运行的、启动就运行的、全局代码放在这里面。
    • background的权限非常大,几乎可以调用所有的 chrome API(除了 devtools),而且它可以无限跨域,也就是可以跨域访问任意网站而无需对方设置CORS。
      • 【有待验证:】(其实不止是background,所有的直接通过chrome-extension://id/xx.html这种方式打开的网页都可以无限制跨域。)
    • 后台页面只可调试代码逻辑,是没有界面的。

    3. content_scripts

    注意:

    • content_scripts 里的js可以访问页面的DOM,但不能访问页面里的JS环境对象(比如某个JS变量),只能通过 injected js 来实现。
    • content_scripts 不能访问大部分的 chrome API,除了下面几种:
      • chrome.extension(getURL , inIncognitoContext , lastError , onRequest , sendRequest) 这是???
      • chrome.i18n 国际化
      • chrome.runtime(connect , getManifest , getURL , id , onConnect , onMessage , sendMessage) 访问配置文件,本页url
      • chrome.storage 访问本地存储
    • 这些API绝大部分时候都够用了,非要调用其它API的话,你还可以通过通信来实现让background来帮你调用

    Content script是在一个特殊环境中运行的,这个环境成为isolated world(隔离环境)。它们可以访问所注入页面的DOM,但是不能访问里面的任何javascript变量和函数。 对每个content script来说,就像除了它自己之外再没有其它脚本在运行。 反过来也是成立的: 页面里的javascript也不能访问content script中的任何变量和函数。

    4. popup

    • popup是点击browser_action或者page_action图标时打开的一个小窗口网页,焦点离开网页就立即关闭,一般用来做一些临时性的交互,或者作为一个需要频繁操作的快捷入口。
    • popup可以包含任意你想要的HTML内容,并且会自适应大小。可以通过default_popup字段来指定popup页面,也可以调用setPopup()方法。
    • 【注意】需要特别注意的是,由于单击图标打开popup,焦点离开又立即关闭,所以popup页面的生命周期一般很短,需要长时间运行的代码千万不要写在popup里面。
    • 在权限上,它和background非常类似,它们之间最大的不同是生命周期的不同,popup中可以直接通过chrome.extension.getBackgroundPage()获取background的window对象。

    5. 五种JS之间的消息通信(比较关键!)

    • 记忆的关键在于,理解这些通信路径的目的和使用场景!
    • popup和background其实几乎可以视为一种东西,因为它们可访问的API都一样、通信机制一样、都可以跨域。
    • 阅读这篇文章有助于理解插入脚本和内容脚本直接的通信方式:https://crxdoc-zh.appspot.com/extensions/content_scripts

    注:第一列为发起方,第一行为接收
    在这里插入图片描述

    1. popup 访问 background:
      popup 可以直接调用 background 的JS方法,也可以直接访问background的DOM:
    // popup.js
    let bg = chrome.extension.getBackgroundPage()
    bg.xxx() // 访问bg的方法
    console.log(bg.document.title) // 访问BG的DOM
    
    1. background 访问 popup:(前提是popup已经打开):
    // background.js
    let views = chrome.extension.getViews({type: 'popup'})
    if (views.length) {
    	console.log(views[0].document.title)
    }
    
    1. popup 或 background 主动向 content 发送消息
      网上有很多老代码用的是 chrome.extension.onMessage,没有搞清楚 chrome.extension 和 chrome.runtime 之间的区别,可能只是别名。建议统一使用 chrome.runtime。
    // popup.js 或 background.js
    function sendMessageToContent (message, callback) {
    	chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
    		chrome.tabs.sendMessage(tabs[0].id, message, (response) => {
    			if (callback) callback(response)
    		})
    	})
    }
    sendMessageToContent({action: 'test', data: '你好,我来自popup!'}, (response) => {
    	console.log('来自content的回复:', response)
    })
    
    // content.js 接收
    chrome.runtime.onMessage.addListener((request, sender, senderResponse) => {
    	if (request.action === 'test') {
    		console.log(request.data)
    	}
    	senderResponse('我收到了你的消息---来自content')
    })
    
    1. content 主动向 popup 或 background 发送消息。注意事项:
      • content 向 popup 主动发送消息的前提是 popup 必须打开,否则需要利用 background 作中转;
      • 如果 background 和 popup 存在多个地方监听,那么他们都可以同时收到消息,但只有一个可以 senderResponse,一个先发送了,另外的就无效了。
    // content.js
    chrome.runtime.sendMessage({data: '你好,我来自content'}, (response) => {
    	console.log('收到来自后台的回复:', response)
    })
    
    // background.js 或 popup.js
    chrome.runtime.onMessage.addListener((request, sender, senderResponse) => {
    	console.log('收到来自content的消息')
    	console.log(request, sender, senderResponse)
    	senderResponse('我来自后台,我已收到你的消息')
    })
    
    1. 嵌入页面的JS 与 content 之间
      (待续。。。暂未发现使用场景)
      主要通过window.postMessage和window.addEventListener来实现二者消息通讯。

    2. 补充:长连接
      相对于 chrome.tabs.sendMessage、chrome.runtime.sendMessage 这类短连接而言的,类似于 websocket 的概念。
      接口:port = chrome.tabs.connect 和 port = chrome.runtime.connect
      监听:chrome.runtime.onConnect.addListener((port) => {…})

    6. 简单了解:event_pages

    鉴于background生命周期太长,长时间挂载后台可能会影响性能,所以Google又弄一个event-pages,在配置文件上,它与background的唯一区别就是多了一个persistent参数:

    {
    	"background": {
    		"scripts": ["event-page.js"],
    		"persistent": false
    	}
    }
    

    它的生命周期是:在被需要时加载,在空闲时被关闭,什么叫被需要时呢?比如第一次安装、插件更新、有content-script向它发送消息,等等。

    7. 有待深入:injected-script,涉及到消息通讯

    • 使用场景:因为content-script有一个很大的“缺陷”,也就是无法访问页面中的JS,虽然它可以操作DOM,但是DOM却不能调用它,也就是无法在DOM中通过绑定事件的方式调用content-script中的代码(包括直接写onclick和addEventListener2种方式都不行),但是,“在页面上添加一个按钮并调用插件的扩展API”是一个很常见的需求

    Chrome插件的 8 种展示方式

    • browserAction(浏览器右上角)
      • 图标
      • tooltip
      • badge
    • pageAction(地址栏右侧)
    • contextMenus(右键菜单)
    • override(覆盖特定页)
    • devtool(开发者工具)
    • option(选项页)
    • omnibox(向地址栏注册一个关键字以提供搜索建议)
    • notification(桌面通知)

    几种脚本的API权限对比

    权限对比

    零碎知识

    • 没有严格的项目结构要求,只要求保证根目录有一个 manifest.json 即可。

    • chrome插件除了Chrome浏览器之外,还可以运行在所有webkit内核的国产浏览器,比如360极速浏览器、360安全浏览器、搜狗浏览器、QQ浏览器等等。

    • 调试:打开开发者模式。在 chrome://extensions 里找到本插件,点击“背景页”,就可以打开 Devtools

      • 如果要调试vue页面
      • 全局安装包 npm install -g @vue/devtools
      • 执行命令 vue-devtools 启动
      • 在页面中加入
      • 参见 https://www.jianshu.com/p/036c8eda1e7c
    • chrome.* API 中的方法通常是异步的:它们不等待操作完成就立即返回。如果您需要知道某个操作的结果,您应该向方法传递一个回调函数。

    常见问题

    • 关于插件ID

      • chrome依靠插件ID而不是插件名字,来判断是否为同一个插件。
      • 开发测试时,使用的是未压缩的文件夹,而其插件ID是根据插件所在的绝对路径计算而来的。
      • 想要为插件定制一个不变的ID,需要每次打包都输入同一个私钥文件,如图
        在这里插入图片描述
    • 关于 pem 密钥文件有何用?

      • 用于生成插件ID,区分插件的。假设,你当前插件叫做MyFirstExtension,版本号为1.0,而下一次升级时,你想把产品名称改为MySecondExtension,版本号为2.0。但,如何保证Chrome认为它们是一款插件呢?这个时候,就需要pem密钥文件了,再次生成crx文件时,选择pem文件。所以该文件要保存包,以便后续更新。
    • 【与chrome插件无关】在websocket协议头里无法通过自定义header字段添加 Token 鉴权信息。

      • 解决方法:只能通过其他方式传递token,比如cookie。
    • 如果要让chrome插件与本地原生应用通讯,需要把插件id配置在 chrome 的 manifest.json 文件里:

      • /Users/pangyue/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.thunder.chrome.host.json
      • mac迅雷下载支持就是这样干的
    • chrome.pageCapture 模块,有个 saveAsMHTML 方法,可以为网页保存快照在本地。但MHTML文件不能已在线的方式访问,只能在本地文件系统下访问。

    MHTML is a standard format supported by most browsers. It encapsulates in a single file a page and all its resources (CSS files, images…).
    Note that for security reasons a MHTML file can only be loaded from the file system and that it can only be loaded in the main frame.

    • 获取当前窗口ID
    chrome.windows.getCurrent(function (currentWindow) {
    	console.log('当前窗口ID:' + currentWindow.id);
    });
    
    • 获取当前标签页ID
    // 方法一:
    function getCurrentTabId (callback) {
    	chrome.tabs.query({active: true, currentWindow: true}, function(tabs)
    	{
    		if (callback) callback(tabs.length ? tabs[0].id: null);
    	});
    }
    // 方法二:(更稳妥)
    function getCurrentTabId2() {
    	chrome.windows.getCurrent(function(currentWindow) {
    		chrome.tabs.query({active: true, windowId: currentWindow.id}, function(tabs) {
    			if (callback) callback(tabs.length ? tabs[0].id: null);
    		});
    	});
    }
    
    • 本地存储
    • chrome.storage是针对插件全局的,你在background中保存的数据,在content-script也能获取到;
    • webRequest
      请求拦截:
    // web请求监听,最后一个参数表示阻塞式,需单独声明权限:webRequestBlocking
    chrome.webRequest.onBeforeRequest.addListener(details => {
    	// cancel 表示取消本次请求
    	if(!showImage && details.type == 'image') return {cancel: true};
    	// 简单的音视频检测
    	// 大部分网站视频的type并不是media,且视频做了防下载处理,所以这里仅仅是为了演示效果,无实际意义
    	if(details.type == 'media') {
    		chrome.notifications.create(null, {
    			type: 'basic',
    			iconUrl: 'img/icon.png',
    			title: '检测到音视频',
    			message: '音视频地址:' + details.url,
    		});
    	}
    }, {urls: ["<all_urls>"]}, ["blocking"]);
    
    • Extension context invalidated. 报错
      • 重新安装或者自动更新扩展程序时,现有内容脚本会失去与扩展程序其余部分的连接——即关闭端口,它们将无法使用runtime.sendMessage()——但内容脚本本身仍然可以继续工作,因为它们已经被注入。
      • 写插件自动更新功能要注意该问题。

    参考

    • 官方文档:https://developer.chrome.com/extensions
    • 中文文档:https://crxdoc-zh.appspot.com/extensions/api_index
    • 中文文档2:http://chrome.cenchy.com/
    • 360浏览器扩展开发文档:
      • http://open.se.360.cn/open/extension_dev/overview.html
      • http://open.chrome.360.cn/extension_dev/overview.html
    • Mozilla:https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions
    • 下载chrome插件crx文件离线安装:https://crxdl.com/
    • 国内插件市场:https://chromecj.com/tag
    • 【来源:小茗同学】https://www.bookstack.cn/read/chrome-plugin-develop/spilt.10.8bdb1aac68bbdc44.md
    • 【博客】Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html
    • 【博客系列文章】https://www.cnblogs.com/champagne/p/
    • 一种开发 Chrome 扩展程序的新姿势:
      • 这篇文章提出了插件开发的痛点 – 不同运行环境之间的通讯问题。但可惜解决方案没有vue版本,只有react版本。
      • https://mp.weixin.qq.com/s?__biz=Mzg4MjE5OTI4Mw==&mid=2247490045&idx=1&sn=5141c0a6c6bc495f0733f620e18d3594&chksm=cf5b0661f82c8f7731f510475af28b37fcacdbf42cbc0282fe6f9482103463de1dd213ad5801&scene=132#wechat_redirect
    展开全文
  • chrome浏览器离线安装包获取和使用技巧
  • weboffice for chrome firefox

    热门讨论 2015-04-01 15:45:10
    weboffice for chrome firefox,点聚weboffice兼容谷歌chrome与firefox浏览器,解决了weboffice在谷歌下无法使用的问题
  • chrome离线插件_SwitchyOmega

    千次下载 热门讨论 2015-08-24 11:03:36
    chrome离线插件_SwitchyOmega
  • 自定义chrome.devtools.network的Chrome插件

    千次阅读 2020-01-26 08:50:37
    文章目录本文要实现的内容chrome扩展(即插件)简介学习Chrome插件开发有什么意义为什么是Chrome插件而不是Firefox插件了解chrome插件什么是chrome插件扩展怎样开始chrome插件开发测试开始使用chrome插件功能打开...
  • 文章目录chrome插件能干什么chrome插件的版本chrome插件的浏览器支持chrome插件的功能组成manifest.jsonpopupcontent scriptbackground scriptchrome插件的展现形式browserAction(浏览器右上角)pageAction(浏览器右...
  • Ubuntu上安装Chrome浏览器

    千次阅读 2022-05-22 08:21:59
    Ubuntu1804上安装Chrome浏览器
  • 如何安装或卸载Google Chrome浏览器

    千次阅读 2020-10-09 10:21:41
    Largely based on Google’s open-source Chromium, Google Chrome is one of the most popular web browsers on Windows, macOS, Android, iPhone, and iPad. Installing and uninstalling Chrome on each ...
  • chrome哪个版本最好用Chrome is Chrome, right? You download Google’s browser—now the most popular in the world—and you’d think you have the same experience as everyone else. But likemost large ...
  • chrome开启flash插件

    千次阅读 2022-05-18 23:51:25
    1、Chrome 69.0以下版本永久启用Flash方法: 浏览器地址栏中输入【chrome://settings/content/flash】,将【禁止网站运行Flash】改为【先询问(推荐)】,点击【允许->添加】按钮,将你希望永久运行flash的网站...
  • Chrome浏览器必备插件推荐

    千次阅读 2022-03-18 14:35:14
    本期我推荐的Chrome浏览器必备插件的原因是,每个人的情况不同,而且很多插件由于作用方向太垂直,只对某一部分群体适用。我推荐的这些插件,无论你从事什么行业,你都可以使用。保证你的Chrome浏览器,安装上这些...
  • 此为离线安装包,方便不便于访问Chrome应用店的用户安装。 原作者主页:http://iblogbox.com/chrome/ietab 可在Chrome内使用多标签页式的IE,同时比其它IE扩展拥有更多强大的实用功能! IE Tab Multi 的表现与原版IE...
  • Chrome 网页长截图

    千次阅读 2021-12-09 12:07:33
    利用 Chrome 原生工具进行网页长截图1 背景2 环境3 操作3.1 准备工作3.2 截图过程3.2.1 电脑端长图3.2.2 手机端长图3.2.3 按屏幕区域截图 1 背景 日常使用过程中截图被使用的越来越频繁,其中window/linux/mac系统...
  • Chrome插件分享

    千次阅读 2021-12-28 18:36:05
    Chrome插件
  • 最新Chrome插件开发 api 解析

    万次阅读 多人点赞 2019-05-05 11:38:44
    我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,所以转载务必保留 http://blog.liuxianan.com/chrome-plugin-develop.html 。本文所有涉及到的大部分代码均在这个demo里面:...
  • Chrome 缓存文件路径在哪

    千次阅读 2022-05-01 09:59:33
    Chrome 使用经验 1.1. Chrome 缓存文件路径查看方法 1.2. One more thing 1.2.1. `mklink` 速查表 1.2.2. Windows 缓存目录 1.3. 解决无法记住密码的问题 1. Chrome 使用经验 1.1. Chrome 缓存文件路径查看方法 ...
  • 本文介绍如何修改 Chrome 安装目录.
  • centos7 安装chrome

    千次阅读 2021-11-30 11:41:28
    1. 下载chrome rpm 包 - google-chrome-stable_current_x86_64.rpm wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 2. 安装依赖liberation-fonts,libvulkan [root@...
  • Chrome 离线下载最佳方法

    千次阅读 2022-04-26 00:26:27
    文章以下载Ubuntu 20.4 上可运行的Chrome为例子,讲解了下载Chrome的方法。此方法可以通用下载Mac、Win等其他操作系统下的Chrome离线安装包。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 810,428
精华内容 324,171
关键字:

chrome