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,具体在官方文档里有介绍。

 

 

=================

推荐:【堡垒之夜大逃杀教程视频,按键攻略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值