最近做Firefox的开发,一直在用javascript写XPCOM组件,javascript这个东东来写XPCOM非常痛苦,有一点错误都无法注册成功,许多时候基本靠肉眼一个单词一个单词的找,当然也有一些技巧。Firefox开发最常用的工具有firebug,javascript Debug和XPCOMViewer,使用XPCOMViewer来查看已注册的组件。
常见的错误:
一、死活注册不上:
注释掉其他方法和成员变量,只保留QueryInterface方法,这样基本都会注册成功了,一旦注册成功,取消掉注释,就可以使用javascript Debug来调试了。
二、查看XPCOM Viewer(点击要找的XPCOM展开树)发现该XPCOM没有实现指定的接口或者莫名其妙的实现了没有指定的接口:
没有实现接口: 一般可能idl的接口没有实现nsISupports导致
实现了没有指定的接口:一班可能是copy别的代码,uuid重复导致
三、Cc["@company.name;1"].getService(Ci.interfaceName)或Cc["@company.name;1"].createInstance(Ci.interfaceName)出现错误,这里的Cc(Components.classes)Ci(Components.interface):
Cc["@company.name;1"] has no properties 说明中括号中组件Constract ID写错或者组件没有注册成功
Invalid InterfaceID: 说明Ci中括号中的名字写错,或者没有该接口(可以通过XPCOM Viewer查看现有的接口)
四、参数不匹配
IDL的声明参数和实际传递的参数不匹配,特别修改过参数,是注册的接口没有更新,这时候最难发现
五、已注册上组件每次在删除掉xpti.dat和compreg.dat后又注册不上,但也找不到问题所在,可以试一试在原来的代码
加减一空行,以示改变,这样可能会被注册成功。
【待续】
分享到:
相关推荐
该工具是用于xpcom组件开发的vc2010项目向导。 您可以使用此向导创建xpcom组件。 工具的羽毛:1.所有xpcom组件开发环境均已创建(适用于vc2010); 2.支持简单的UI; 3.支持壁虎17/18/19
这是一本有关Gecko的书,Gecko是所有Mozilla品牌的软件及其衍生产品中使用的开源Web浏览器布局引擎,以及有关为基于Gecko的应用程序创建XPCOM组件的书。
XPCOM(跨平台组件对象模型)是Mozilla基金会开发的一种组件系统,它允许开发者创建可重用的、跨语言和跨平台的软件组件。XPCOM组件可以在Firefox、Thunderbird等Mozilla应用程序中使用,提供核心功能和服务。Gecko ...
- **错误码**:用于处理常见的错误情况。 #### 第2章:使用XPCOM组件 本章将介绍如何在C++代码中使用XPCOM组件,并探讨如何通过XPConnect从脚本语言(如JavaScript)中调用这些组件。 #### 第3章:组件内部机制 - ...
XPCOM,全称为“Cross Platform Component Object Model”,是由Mozilla基金会开发的一种跨平台的组件对象模型,主要用于构建可扩展的网络应用程序,特别是Firefox浏览器和其他基于Gecko引擎的应用。这个技术允许...
标题“xpcom descriptions”指的是与XPCOM(Cross Platform Component Object Model)相关的描述性文档,这是一个在Mozilla项目中广泛使用的组件系统,允许不同编程语言之间的交互。XPCOM是Firefox、Thunderbird等...
Mozilla的XUL(XML User Interface Language)提供了一种方法,允许JavaScript调用C++编写的组件,这就是XPCom(Cross Platform Component Object Model)。本篇文章将深入探讨如何在XUL环境中通过XPCom调用C++组件...
XPCom,全称为eXtensible Platform Components,是Mozilla基金会开发的一种跨平台的组件系统,它允许不同语言之间进行交互,使得开发者可以构建可重用的、模块化的软件组件。XPCom是Firefox、Thunderbird等Mozilla...
XPCom,全称为Cross Platform Component Object Model,是Mozilla基金会开发的一种跨平台组件模型,它允许开发者用C++编写底层组件,同时在JavaScript中调用这些组件,实现两者之间的无缝交互。这样做的好处在于,...
XPCOM(Cross Platform Component Object Model)是Mozilla基金会开发的一种跨平台组件模型,它允许不同语言之间的组件交互,尤其在JavaScript中常用于访问和控制组件。 本书的主要读者群体是具有C++基础的开发者,...
此外,XPCOM(跨平台组件对象模型)是 Mozilla 的一个重要组成部分,它是一种接口技术,允许不同语言之间进行交互。 ### 2. 扩展开发基础 - **XUL**: XUL 是一种基于 XML 的用户界面描述语言,用于创建跨平台的...
XPCOM(Cross Platform Component Object Model)是一种跨平台组件对象模型,它是由Mozilla基金会为了Firefox浏览器和其他项目所设计的一套组件架构。XPCOM允许开发者创建可复用的软件组件,并支持多种编程语言如C++...
XPCom,全称为eXtensible Plug-in Component Model,是Mozilla基金会开发的一种组件模型,用于在Firefox、Thunderbird等开源软件中实现跨语言、跨进程的组件交互。它基于COM(Component Object Model)并进行了扩展...
在IT行业中,尤其是在软件开发领域,跨平台组件对象模型(XPCOM)是Mozilla基金会的开源项目,如Firefox浏览器所使用的底层技术之一。XPCOM允许开发者创建可重用的跨语言、跨平台的组件。当涉及到XPCOM组件间的交互...
通过这些技术的比较,开发者可以根据项目需求选择最适合的组件开发方法。Linux平台的组件开发不仅能够提高软件的复用性,还能增强软件的适应性和可扩展性,以应对不断变化的网络环境和用户需求。文章的这部分内容...
`xpcom`是Mozilla开发的一个跨平台组件接口,它允许不同编程语言之间进行交互,并在Firefox等开源浏览器中扮演着重要角色。 描述中提到"xpcom资料太少,一个可完整编译工程",这表明该压缩包可能包含了一个完整的、...
**XPCOM(eXtensible Component Object Model)** 是Mozilla基金会开发的一种组件对象模型,它允许不同语言之间进行交互,特别是在Firefox等基于Gecko浏览器的扩展开发中扮演着核心角色。JavaScript是XPCOM的一个...
不容易啊,研究了近一年的成果。不过只要你能掌握firefox的核心xulrunner以及xpcom技术,客户端的开发将会不是任何问题,包括跨平台,比如: mac os x, Linux。你所要关注的将会集中在核心技术的实现上。
XPCOM提供了一种跨平台的解决方案,使得开发出的组件能够在不同的操作系统上运行,这极大地提高了代码的复用性和灵活性。 2. **XPCOM组件架构**:XPCOM的组件架构基于接口和契约ID(contract ID)。每个组件实现一...