五年前为了自己用着方便,写了个小小的Chrome扩展:Butterfly Sharing

名字很土,完全是顺手摸了个图标加个名字就放上去,然后就懒得改了。

简单介绍下它的功能:

  • 缩短网址。比如你正在浏览 http://www.jianshu.com/p/2f737f8fe75f ,点一下扩展按钮,就可以变成这样: http://t.cn/RwNrNHA。用来记录和分享就容易一些。
  • 分享到SNS。比如刚刚那个网址,可以直接变成 初出茅庐的IT人员,怎样才能做好项目经理? http://t.cn/RwNrNHA,你可以点一下按钮就直接把这段文字分享到微博、开心网、facebook什么的,或者拷贝到邮件/聊天工具中发给朋友,因为网址简短,它不会破坏你的版面。
  • 短网址引擎可选择,现在支持 goo.gl,t.cn,等等
  • 支持二维码。这样你在电脑上看到一个很好的网页,想发到手机就很方便了。

项目开源

这个扩展最初是修改自 goo.gl shortener,因为 goo.gl 需要翻墙,用起来并不总是很方便(尤其是对你要分享的朋友来说),并且当时它对国内的 SNS 支持并不完全。所以参考这个扩展自己弄了一个。

时过境迁,国内外 SNS 站点都发生了很多变化,比如很好用的Google Reader彻底挂了。比如现在分享的主力从PC端转移到了移动端,所以这次加上了二维码。

感觉这个小小的扩展,还有一些用武之地,于是干脆把它开源。虽然代码是门外汉水平,对初学chrome扩展开发的同学应该还是有所帮助。同时,如果有熟悉 JavaScript、CSS 的同学愿意同我一起来完善这个插件将是非常令人开心的事情。有意协作请发邮件或留言。

Chrome 扩展开发主要变化

这个扩展自从提交到应用商店就没怎么动过。最近有时想把在电脑上浏览的网页直接转发到朋友圈,发现并没有现成的好用的扩展,于是想给之前这个扩展加上二维码的功能。本以为几句代码改改的事情,没想到一动手才发现麻烦大了:Google 在两年前强制要求所有新提交的扩展一律将manifest版本升级到2,随之而来的是一堆编码规则的变化。

春节前用业余时间清理了一下代码重新发布,过完年总结下这些坑,如果有遇到同样问题的同学,可以参考下。

Manifest 更新

详细的描述参考 Google 官方文档
主要变化如下:

  • manifest_version 升级到2

这个倒是简单,只要在manifest.json 文件中加一行:

"manifest_version": 2
  • background 更新

“background_page” 失效。我们不需要一个单独的background.html来包含后台脚本。现在只需要简单地在manifest中编辑属性 “background” 即可。例如:

"background": {
    "scripts": [
                "scripts/consts.js", 
                "scripts/preferences.js", 
                "scripts/background.js",
                "scripts/services.js"
                ],
    "persistent": false
  }

这个方法其实比以前省事。

  • 弹出页的定义

默认的弹出页定义方式改为:

"browser_action": {
    "default_icon": "icons/butterfly-48.png",
    "default_popup": "popup.html"
}

代码规则更新

 

Manifest 的更新很简单。这个 CSP 才是大 BOSS。简单来说,就是不再允许 HTML 内嵌脚本,比如 onclick, onload 这些统统不能用了。所有的脚本一律要放到 JS 文件中去。

所以,以前直接写在 HTML 文件中的事件处理,只能在 JS 文件中通过 DOM 操作进行。好在用 jQuery 来弄这个很方便,不过要从以前埋的坑里爬出来,只能手工一条条去改。

sendMessage / onMessage

所有的 sendRequest / onRequest 一律改为 sendMessage / onMessage。用法倒是没变。

嗯,差不多就这么些东西了。