2.window.postMessage()函数的第二个参数“domain”不能指定域名,只能填"*",这是一个已知的Bug,会导致安全性问题,期待Mozilla的改进。参考最后部分
PS:从21.*版本开始,不知不觉中已经发现这个限制已经修复了,现在可以指定域名。至于怎么拿到扩展的域名呢,两种情况:
(1)panel:用window.alert()弹窗出来,在标题里就看到域名了
(2)扩展:用self.data.url()这个API来获取扩展里的一个文件(比如一张图),里面就包含了域名
3.在Webkit里:
@keyframes 'loading'{ from{ transform:rotate(360deg); } to{ transform:rotate(0); } }
把'loading'的单引号去掉才能在moz或者ms上兼容
4.不像Chrome里的Popup,Mozilla里的Panel是XUL对话框来的,所以导致了一些问题:
(1)不能用浏览器自带的Developer-Tools来调试,只能用console.log(),但界面效果调试起来就很麻烦了。
(2)Panel大小是定死的,不能根据页面界面自适应。
5.Add-on Builder不支持本地化,要想做多语言版本,只能先把其他功能在Add-on Builder上做好了,下载下来再自行修改,把本地化语言包增加进去。
另外,本地化的文档好像有点问题,语言包我用chrome的“*.json”是可行的,反而根据官方文档来做倒不行。
6.add-on的本地存储跟content script和panel都不同,因为它们不在同一个域名下。做到跟其他代码兼容可用:
var localStorage = require("simple-storage").storage;
类似的,时间函数也可以:
var setTimeout = require('sdk/timers').setTimeout; var clearTimeout = require('sdk/timers').clearTimeout; var setInterval = require('sdk/timers').setInterval; var clearInterval = require('sdk/timers').clearInterval;
7.content script和panel都不能访问扩展的API,具体在官方文档里有介绍。
8.