Windows 有一个东西叫做 URL Protocol,即注册一个自定义的协议,使得可以使用某一个程序来自动打开某种格式的链接。

举个例子来讲,对于我们经常使用的 Evernote 来说,每一篇文章都有一个内部链接,形式如下:

evernote:///view/52572/s1/98223c5d-84a1-438d-a4c7-f60dde858f87/98223c5d-84a1-438d-a4c7-f60dde858f87/

在你正确安装了 Evernote 后,你可以在 Firefox 或是 IE 的地址栏里输入这个内部链接,则 Windows 系统会自动调用 Evernote 来打开这个链接。而 Evernote 被调用来打开这一链接的表现,恰恰是直接跳转到该篇文章,并显示出来。

对于不同的 URL Protocol 响应程序,这种表现是各自编程处理的,这取决于提供 URL Protocol 的程序员的想法。

但是不知道出于安全或是其它原因的考虑,Chrome 并不支持 URL Protocol 来打开第三方应用,我在 Chrome 的设置里找了很久,虽然提到在 Content settings 里有一个 Handlers,但是这个设置却永远是一个空白。

Chrome 虽然没有设置 URL Protocol 的入口,不过我们却可以直接编辑 Chrome 的配置文件来实现定义这一功能。这一配置文件是 Chrome 的 Local State 文件,这个文件的保存路径根据操作系统有所不同:

  • Windows7 上是 %LOCALAPPDATA%\Google\Chrome\User Data\Local State 这个文件;
  • Mac OS X 10.8 上是 ~/Library/Application Support/Google/Chrome/Local State 这个文件;
  • Ubuntu 12.04 上是 ~/.config/google-chrome/Local State 这个文件。

为了打开 Evernote 的 URL Protocol,找到这个文件后,我们就可以按如下步骤进行编辑:

  1. 关闭 Google Chrome;

  2. 打开文件 Local State 并找到 excluded_schemes 一节,在 protocol_handler 下;

  3. 添加一行内容:

    “evernote”: false,
    

  4. 重启 Chrome。

这样,我们再到 Chrome 里打开形如 evernote:/// 的链接,Evernote 就会自动跳出来并把相应的文章呈现在你眼前了。

如果需要打开其它自定义的 URL Protocol,则只需要把 evernote 关键词换成对应的关键词即可。