覆写特定页

使用替代页,可以将Chrome默认的一些特定页面替换掉,改为使用扩展提供的页面。这让扩展开发者可以开发更多有趣或者实用的基本功能页面。替代页通常会有大量的CSS和JavaScript代码。

扩展可以替代如下页面:

  • 书签管理器:从工具菜单上点击书签管理器时访问的页面,或者从地址栏直接输入 chrome://bookmarks
  • 历史记录:从工具菜单上点击历史记录时访问的页面,或者从地址栏直接输入 chrome://history
  • 新标签页:当创建新标签的时候访问的页面,或者从地址栏直接输入 chrome://newtab

注意:一个扩展只能替代一个页面。

注意:如果你替代隐身窗口的页面,请注意要在manifest中将 incognito 属性指定为 "spanning"。

注意:你不能替代隐身窗口的新标签页。

下面的截图是默认的新标签页和被扩展替换掉的新标签页。

默认的新标签页 替代的新标签页
default New Tab page a blank New Tab page

Manifest

下面是在extension manifest中注册替代页的写法。

{
  "name": "My extension",
  ...
 
  "chrome_url_overrides" : {
    "pageToOverride": "myPage.html"
  },
  ...
}

对于示例中的pageToOverride,可替换成如下关键字

  • bookmarks
  • history
  • newtab

提示

要制作一个优秀的替代页,请一定遵循如下指导原则:

  • 你的页面实现的要即小又快。
    用户希望内建的浏览器页面可以快速的打开,请避免做一些要消耗很多时间的事。如:尽量避免从网络中或者数据库资源中提取数据。

  • 页面要带标题。
    否则用户可能会看到网页的URL,造成困扰。其实就是在页面头上加入:<title>NewTab</title>

  • 别指望页面会获得键盘输入焦点。
    通常新标签创建的时候,地址栏会获得输入焦点,而不是页面。

  • 别试着模仿默认的新标签页。
    对于新标签页上的重要功能支持,如:最近关闭的标签、主题背景图等,APIs的支持尚未完善,在这些APIs确认完备之前,你最好做一些完全不同的新标签页设计(以避免使用这些非正式的APIs)。

范例

你可以在这里找到范例examples/api/override,其他范例参见代码范例