该页面翻译自 Google Chrome Extensions 与 Google Chrome Apps。除非特别说明,该页面的内容遵循 Creative Commons Attribution 3.0 License,代码示例遵循 BSD License。
如果您在这里找不到您的问题的答案,请尝试 Chrome Web Store 常见问题、Stack Overflow 上的 [google-chrome-extension] 标签、网上论坛或网上应用店帮助。
Google Chrome 浏览器的扩展程序是在 Chrome 浏览器中运行并提供附加功能、与第三方网站或服务整合、自定义浏览体验的应用。
编写扩展程序与开发者创建网站一样,使用相同的标准网络技术。HTML 用于内容标记语言,CSS 用于格式化,JavaScript 用于脚本。由于 Chrome 浏览器支持 HTML5 和 CSS3,开发者可以在扩展程序中使用最新的网络技术,例如画布和 CSS 动画。扩展程序也可以访问一些 JavaScript API,帮助进行诸如 JSON 编码以及与浏览器交互的功能。
扩展程序在安装时由 Chrome 浏览器下载,以后从本地磁盘上运行,以提高性能。然而,如果扩展程序的新版本上传到网上,将会在后台自动下载下来,给所有安装了这一扩展程序的用户。扩展程序也可以在任何时候请求远程内容,与网络服务交互或从网上获取内容。
要确定 Chrome 浏览器的不同版本当前在各个不同平台上是否可用,请访问 omahaproxy.appspot.com。在该站点上您将会看到类似于如下形式的数据:
cf,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### cf,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### cf,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### linux,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### linux,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### linux,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### mac,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### mac,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### mac,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### win,canary,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### win,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### win,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### win,stable,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### cros,dev,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,##### cros,beta,#.#.###.#,#.#.###.#,mm/dd/yy,mm/dd/yy,#####,#####,#####
每一行代表不同平台和分支的组合信息。列出的平台包括
cf
(Google Chrome Frame)、linux
、mac
、win
、cros
(Google Chrome
OS)、ios
和
android
。列出的分支包括
canary
、dev
、beta
和 stable
。分支后面分成四部分的数是部署至相应平台、分支组合的当前和前一个
Chrome 浏览器的版本号。剩下的信息是一些元数据,有关发行版最早开始的时间以及与每一次编译相关的修订版本。
可以,扩展程序能够发出跨域请求。有关更多信息,请参见这一页面。
可以。扩展程序能够发出跨域 Ajax 请求,所以它们能够直接调用任何远程 API。以 JSON 格式提供数据的 API 使用起来特别方便。
可以。因为 V8(Chrome 浏览器的 JavaScript 引擎)原生支持 JSON.stringify 和 JSON.parse,您可以在您的扩展程序中使用这些函数,如这一页面(英文)所述,而不用在您的代码中包含任何额外的 JSON 库。
可以。扩展程序可以使用 localStorage 来永久地存储数据。使用 Chrome 浏览器内建的 JSON 函数,您可以在 localStorage 中存储复杂的数据结构。对于需要在存储的数据上执行 SQL 查询的扩展程序,Chrome 浏览器实现了客户端 SQL 数据库,您也可以使用。从 Chrome 20 开始,扩展程序还能使用 chrome.storage API 存储数据,并且还可以自动同步。
可以。某些扩展程序就使用 OAuth 访问远程数据 API,大部分开发者觉得使用 JavaScript OAuth 库会更方便,这样可以简化发送 OAuth 请求的过程。
可以,只要使用 NPAPI 接口。然而由于可能的滥用行为,我们在 Chrome 网上应用店中托管您的扩展程序前要先审核。
可以。您的扩展程序可以向 Chrome 浏览器的用户界面添加按钮,有关更多信息请参见浏览器按钮和页面按钮。
扩展程序也可以创建弹出通知,在浏览器窗口外存在。有关更多详情请参见桌面通知文档。
不能。扩展程序仅限于监听 API 文档中描述的事件。
可以。扩展程序可以向其他扩展程序传递消息,有关更多信息请参见消息传递文档。
不能。弹出内容只有当用户单击相应的页面/浏览器按钮时才能打开,扩展程序不能以编程方式打开自己的弹出内容。
不能。当用户将焦点移至弹出内容外的其他浏览器区域时,弹出内容会自动关闭,没有办法在用户单击其他地方后仍然保持弹出内容打开。
您可以监听 runtime.onInstalled 事件,当您的扩展程序安装或更新,或者 Chrome 浏览器本身更新时收到通知。您的扩展程序卸载时没有相应的事件产生。
扩展程序使用 HTML 和 CSS 定义它们的用户界面,所以您可以使用标准表单控件来建立您的用户界面,或者用 CSS 修改您的用户界面的样式,就像网页中一样。另外,扩展程序还可以向 Chrome 浏览器本身添加有限的用户界面元素。
扩展程序最多可以在本地存储中储存 5MB 数据。如果使用 chrome.storage API 并在清单文件中指定了 "unlimitedStorage" 权限则不受这一限制。
Chrome 浏览器内建的开发者工具可以用来调试扩展程序和网页,有关更多信息请参见有关调试扩展程序的教程。
您不能使用类似于 http://google.*/*
的通配符匹配表达式来匹配顶级域名(TLD)(像
http://google.es
和
http://google.fr
),这是由于将这一匹配表达式限制在期望域名中的复杂性导致的。
对于 http://google.*/*
的例子,Google 的域名可以匹配,但是
http://google.someotherdomain.com
也可以。另外,许多站点并不拥有它们域名的所有顶级域名(TLD)。例如,假定您想使用
http://example.*/*
匹配
http://example.com
和
http://example.es
,但是
http://example.net
是一个恶意站点。如果您的扩展程序有漏洞,恶意站点可能会攻击您的扩展程序,通过您的扩展程序获得提升的特权。
您应该显式地列出所有您希望在上面运行您的扩展程序的顶级域名(TLD)。
管理 API 的目的是帮助您创建替代“打开新的标签页”页面的扩展程序,而不是为当前扩展程序产生安装/卸载事件。
您可以监听 runtime.onInstalled 事件,参见这一常见问题条目。
当您开发扩展程序时,您可能会发现不匹配扩展程序文档的行为,而这有可能是 Chrome 浏览器中的问题导致的。最好提交合适的问题报告,并向 Chromium 小组提供足够的信息来重现这一行为。
为了确保这一点,您应该遵循如下步骤:
如果您想到一个新功能(尤其是有关实验性 API 的),增加后可以改善扩展程序开发体验,确保合适的请求在问题追踪器中提交。
为了确保这一点,您应该遵循如下步骤: