CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
阅读:3074回复:10

关于FireFox扩展开发与扩展脚本的问题,求帮忙!感谢!

楼主#
更多 发布于:2013-12-05 16:55
在原有老版本插件的基础上基于最新GeckoSDK作出修改并重新打包扩展包。
问题是,chrome/content目录下的js文件,在FireFox24.0  FireFox25.0浏览器里不能被自动调用。导致扩展里的dll接口不能被js调用。在FireFox23.0以及之前的版本,该js文件都可以被自动调用。
希望大牛大神们能给予帮助,分析一下,感谢。
另,js文件语法是没有问题的,用只有一句alert的js文件亦是如此。
CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
1楼#
发布于:2013-12-06 17:37
FireFox24、25版本下,无法确定扩展中的overlay.xul、js文件是否分别被调用,在xul中添加<script>alert,无法弹框,在js中也是无法弹框。怎么样确定是否文件被调用了?
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
2楼#
发布于:2013-12-08 14:37
新的这种 Add-on SDK Documentation

新的无法使用 overlay.xul
CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
3楼#
发布于:2013-12-09 15:11
hzzhaiqi:新的这种 Add-on SDK Documentation ?

新的无法使用 overlay.xul
回到原帖
说新的SDK,其实只是Components下的XPCOM组件用新的SDK编译。扩展的制作除了把dll换成新编译的然后修改一些版本参数,其他就在原版的基础上没做什么改动。
CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
4楼#
发布于:2013-12-09 15:13
hzzhaiqi:新的这种 Add-on SDK Documentation ?

新的无法使用 overlay.xul
回到原帖
Add-on SDK Documentation 好像是用Add-on builder才需要的吧?
CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
5楼#
发布于:2013-12-09 15:20
原来的扩展是注册安装后需要重启的XUL扩展。所以应该先调用chrome.manifest,获得overlay.xul 和XPCOM.dll的路径,然后通过打开chrome/content/overlay.xul文件获得script src 文件的路径。现在的情况是,chrome.manifest文件中xul文件的路径,“ chrome:Helper/content/overlay.xul ”是可以在浏览器中找到这个Helper这个包,并且能找到里面的overlay.xul,但是通过在overlay.xul中添加 js 输出测试,发现在网页打开过程中并没有调用到xul文件。求指导,如果有没理解问题的,希望能留言告知,渴望您的帮助!!
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
6楼#
发布于:2013-12-10 13:55
CorkiShen:原来的扩展是注册安装后需要重启的XUL扩展。所以应该先调用chrome.manifest,获得overlay.xul 和XPCOM.dll的路径,然后通过打开chrome/content/overlay.xul文件获得script src ...回到原帖
没理解 "在网页打开过程中并没有调用到xul文件",调用哪个xul?。最好传上简化版的扩展。
CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
7楼#
发布于:2013-12-10 16:53
hzzhaiqi:没理解 "在网页打开过程中并没有调用到xul文件",调用哪个xul?。最好传上简化版的扩展。回到原帖
FFHelper.xpi
谢谢你的关注,附件是我修改的扩展包。里面的dll文件是基于GeckoSDK25编译的XPCOM组件,需要通过 js 文件调用里面的接口。 现在的问题是,js文件不能对浏览器的动作进行正常的捕获监听并执行相应操作 ,希望您能帮忙看一下这个扩展,有任何问题希望能及时联系我,万分感谢~
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
8楼#
发布于:2013-12-11 13:21
CorkiShen:谢谢你的关注,附件是我修改的扩展包。里面的dll文件是基于GeckoSDK25编译的XPCOM组件,需要通过 js 文件调用里面的接口。 现在的问题是,js文件不能对浏览器的动作进行正常的捕获监听并执行相应操作 ,希望您能帮忙看一下这个扩展...回到原帖
我没接触过这方面,不太懂。

ff 25 多了个提示
Cannot load binary components from a jar. @ jar:file:///D:/Documents/AutoHotkey/test90/extensions/%7B4d5556bb-fa01-46fd-a1b3-680bac60f22a%7D.xpi!/chrome.manifest:15
没注册
Could not map contract ID '@mozilla.org/FFHelper;1' to CID {7CB5B7A0-07D7-11d3-BDE2-000064657374} because no implementation of the CID is registered.
不能调用
Components.classes["@mozilla.org/FFHelper;1"].createInstance()
找到几个链接
XPCOM changes in Gecko 2.0 - Mozilla | MDN
How to build an XPCOM component in Javascript | MDN

查看 stylish 扩展的 chrome.manifest
interfaces components/stylishStyle.xpt
component {ea17a766-cdd4-444b-8d8d-b5bb935a2a22} components/stylishStyle.js
contract @userstyles.org/style;1 {ea17a766-cdd4-444b-8d8d-b5bb935a2a22}
CorkiShen
小狐狸
小狐狸
  • UID42669
  • 注册日期2013-12-05
  • 最后登录2013-12-17
  • 发帖数9
  • 经验12枚
  • 威望0点
  • 贡献值12点
  • 好评度0点
9楼#
发布于:2013-12-11 13:58
hzzhaiqi:我没接触过这方面,不太懂。

ff 25 多了个提示
Cannot load binary components from a jar. @ jar:file:///D:/Documents/AutoHotkey/test90/ext...
回到原帖
Re:
Cannot load binary components from a jar. @ jar:file:///D:/Documents/AutoHotkey/test90/extensions/%7B4d5556bb-fa01-46fd-a1b3-680bac60f22a%7D.xpi!/chrome.manifest:15
这个问题应该是扩展下面chrome文件夹里面结构的问题了,我等会去修改看看
Re:
Could not map contract ID '@mozilla.org/FFHelper;1' to CID {7CB5B7A0-07D7-11d3-BDE2-000064657374} because no implementation of the CID is registered.
没注册?约定的注册不是在chrome.manifest里面进行的吗?
Re:
Components.classes["@mozilla.org/FFHelper;1"].createInstance()
是要先对扩展实例化?这里不懂,我马上去看看stylish 扩展
Re:Express
How to build an XPCOM component in Javascript | MDN

这个介绍实在是太贴切了,之前也没仔细查找,很有帮助!


太感谢你了,能针对问题十分详细的给予回复、解释,感谢!FireFox这样开源平台正是因为有像你这样乐于探索、分享与帮助的人才显示更加有生机与活力!
已关注你,还会有问题请教,万望指导。
另,针对扩展的学习与制作,有什么好的测试工具吗?如上述你测试的错误是用什么工具发现的?
hzzhaiqi
火狐狸
火狐狸
  • UID30112
  • 注册日期2009-08-18
  • 最后登录2015-09-15
  • 发帖数279
  • 经验180枚
  • 威望1点
  • 贡献值44点
  • 好评度28点
10楼#
发布于:2013-12-11 16:21
CorkiShen:Re:
Cannot load binary components from a jar. @ jar:file:///D:/Documents/AutoHotkey/test90/extensions/%7B4d5556bb-fa01-...
回到原帖
我用的不多,这里有一篇专门讲 debug 的 Debugging - Mozilla | MDN

错误在浏览器控制台(Ctrl + Shift + J)看到 ,我一般用新的配置,安装后重启就能看到。你还可以使用搜索
  • https://developer.mozilla.org/en-US/search?q=%s
  • https://www.google.com/search?num=30&hl=zh-CN&newwindow=1&q=%s&sitesearch=developer.mozilla.org
关于扩展的开发,新版的 Add-on SDK 更简单点,采用通用的 js、html、css,简化的 API。开发者中心 :: Firefox 附加组件
游客

返回顶部