Mozilla扩展开发过程遇到的问题(持续更新)

1.Panel界面的js要用contentScriptFile属性包含进去,而不能直接在HTML页面里添加,否则会导致各种问题。

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.

你可能感兴趣的:(Mozilla扩展开发过程遇到的问题(持续更新))