创建XPCOM组件 3. 使用XPCOM组件
来源:互联网 发布:mac版死或生 编辑:程序博客网 时间:2024/04/29 09:02
缩了很多水...
3. 使用XPCOM组件
原文:https://developer.mozilla.org/en/Creating_XPCOM_Components/Using_XPCOM_Components
玩转XPCOM的最好方法是是先看看它如何被客户端使用。
Mozilla浏览器之类的应用程序是复杂、模块化的XPCOMzujian组件的客户。实际上,几乎所有和浏览器相关的功能,如导航、窗口管理、cookie管理、书签、安全、搜索、渲染等,都定义于XPCOM中,并通过那些组件接口进行访问。Mozilla由XPCOM组件组成。
组件示例
cookie管理器
接口nsICookieManager
removeAll删除所有cookieenumerator枚举cookieremove删除指定的cookie在js中取得CookieManager组件
// xpconnect
var cmgr = Components.classes["@mozilla.org/cookiemanager;1"]
.getService();
cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager);
function FinalizeCookieDeletions() {
for (var c=0; c<deletedCookies.length; c++) {
cmgr.remove(deletedCookies[c].host,
deletedCookies[c].name,
deletedCookies[c].path);
}
deletedCookies.length = 0;
}
从接口连接组件
上面,从js中连接组件的技术叫做XPConnect。它允许在js中调用XPIDL定义的接口方法。XPConnect将应用程序代码绑定到Mozilla浏览器的用户界面、其它基于Gecko的XUL和js环境(如xpcshell)。关于XPConnect和js的更多信息,参考http://www.mozilla.org/scriptable/。
...
JavaScript和Mozilla
...
组件WebBrowserFind
接口nsIWebBrowserFind
findNext查找下一个findBackwards布尔属性,让findNext()向上搜索searchFrames布尔属性,指定是否要搜索子框架matchCase布尔属性,指定是否要区分大小写entireWord布尔属性,指定是否要匹配整个单词...
组件WebLock
接口IWebLock
lock锁定浏览器为当前站点(或读取自磁盘的站点白名单)unlock addSite添加到白名单removeSite sites枚举白名单...
在Mozilla中使用组件
查找Mozilla组件
Mozilla提供了一些工具,可以查找和显示Gecko中有效的接口信息,有XPCOM Component Viewer和MXR。前者不会区分冻结或非冻结接口(在Gecko 2.0中已经不存在冻结接口);后者是一个基于Web的源码查看工具,被冻结的接口在源码的最上方被标记为@status frozen。
XPCOM Component Viewer
XPCOM Component Viewer是一个插件,你可以在浏览器中安装(在沙盒中,目前无效)。替代地,可以试试另外一个类似的插件XPCOMViewer。
...
在Cpp中使用XPCOM组件
nsCOMPtr<nsIServiceManager> servMan;
nsresult rv = NS_GetServiceManager(getter_AddRefs(servMan));
if (NS_FAILED(rv))
return -1;
nsCOMPtr<nsICookieManager> cookieManager;
rv = servMan->GetServiceByContractID("@mozilla.org/cookiemanager",
NS_GET_IID(nsICookieManager),
getter_AddRefs(cookieManager));
if (NS_FAILED(rv))
return -1;
PRUint32 len;
deletedCookies->GetLength(&len);
for (int c=0; c<len; c++)
cookieManager->Remove(deletedCookies[c].host,
deletedCookies[c].name,
deletedCookies[c].path,
PR_FALSE);
XPConnect:在脚本中使用XPCOM组件
var cmgr = Components.classes["@mozilla.org/cookiemanager;1"]
.getService();
cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager);
function loadCookies() {
// load cookies into a table
var enumerator = cmgr.enumerator;
var count = 0;
var showPolicyField = false;
while (enumerator.hasMoreElements()) {
var nextCookie = enumerator.getNext();
nextCookie = nextCookie.QueryInterface(Components.interfaces.nsICookie);
/* .... */
}
function FinalizeCookieDeletions() {
for (var c=0; c<deletedCookies.length; c++) {
cmgr.remove(deletedCookies[c].host,
deletedCookies[c].name,
deletedCookies[c].path,
false);
}
deletedCookies.length = 0;
}
...
- 创建XPCOM组件 3. 使用XPCOM组件
- 创建 XPCOM 组件:XPCOM 简介
- vs2008创建xpcom组件
- XPCOM指南-2_使用XPCOM组件
- XPCOM指南-2_使用XPCOM组件
- 用 JavaScript 创建 XPCOM 组件
- 创建XPCOM组件 2. 概述
- 利用C++创建XPCOM组件(英文)
- 用Visual Studio创建XPCOM组件
- xpcom 组件开发技术
- xpcom组件开发总结
- xpcom 组件开发
- 注册XPCOM组件到Gecko17
- 注册XPCOM组件到Gecko17
- XPCOM指南-4_创建组件的代码
- 创建windows下的第一个C++ XPCOM组件
- XPCOM指南-4_创建组件的代码
- python如何使用firefox的xpcom组件的
- Poco中插件的使用范例
- C语言中sprintf()函数用法简介(转载)
- nginx 错误502 upstream sent too big header while reading response header from upstream
- 固定资产折旧方法
- (全)MoveWindow and SetWindowPos
- 创建XPCOM组件 3. 使用XPCOM组件
- CommonsFileupload的使用
- 字符谜题最后一个
- Android访问中央气象台的天气预报API得到天气数据
- J2ME中读取各种格式的文本文件
- sencha touch发送消息
- 调整心态
- UITableView 详细讲解
- 对request.getSession(false)的理解