问题标签 [xpcom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
484 浏览

c++ - 如何在 Thunderbird 中收听“SendMail”事件?

如果邮件正文中有预定义的字符串,我需要拦截 Thunderbird 发送的所有邮件并阻止发送。它应该是我们已经存在的 XPCOM dll 插件的一部分。

你有任何想法如何实现它吗?

0 投票
4 回答
1041 浏览

firefox - 非 IE 浏览器的浏览器缓存 API

IE 具有 WinInet API,例如 GetUrlCacheEntryInfo,用于读取和操作 IE 浏览器缓存。

Firefox 或 Chrome 等非 IE 浏览器是否有类似的 API?如果是这样,我在哪里可以获得更多信息?

谢谢

更新:

根据以下(从 XPCOM 组件访问 Firefox 缓存)WinInet 函数 GetUrlCacheEntryInfo() 可以通过 nsICacheSession.openCacheEntry() 来获取 nsICacheEntryDescriptor。是否有一个等效的 WinInet 函数 CreateUrlCacheEntry() 将创建一个缓存条目?

0 投票
1 回答
852 浏览

firefox - 如何在 Firefox 中为所有页面元素实现内容转换器?

我正在尝试将 Internet Explorer 插件移植到 Firefox,但我不确定在哪里可以找到我需要的东西。

基本上我需要能够过滤浏览器接收到的具有特定 Content-Type 标头的所有内容。我尝试实现一个流转换器,这有效,但仅适用于页面、框架或 iframe 中的顶级文档。我在使用 IE 时遇到了同样的问题,并且绕过它真的很麻烦,而且由于我理想情况下希望这是跨平台的,所以我真的希望能够在 Firefox 中做到这一点,而无需求助于 vtable hack。

内容以专有压缩格式压缩提供。所以我需要接收数据,解压缩,然后将 Content-Type 改回原始未压缩文件应具有的内容。

如果有一种方法可以过滤所有收到的数据,那可能是可以接受的,我可以自己处理解析标题。

谢谢

0 投票
1 回答
1302 浏览

firefox-addon - nsIFile:如何获取 Vista AppData/LocalLow 文件夹路径?

我能够获得用户“AppData/Local”文件夹的路径,如下所示,appdatafile = Components.classes["@mozilla.org/file/directory_service;1"]。获取服务(Components.interfaces.nsIProperties)。get("LocalAppData", Components.interfaces.nsIFile).path;

谁能帮我获取“Ap​​pData/LocalLow”用户文件夹?

0 投票
0 回答
1996 浏览

c++ - 编写一个使用 XPCOM 组件的 Firefox 扩展?

我正在尝试编写一个 Firefox 扩展程序,将 Firefox 的历史记录写入 Windows 系统历史记录,这对于使用 IE和Firefox 完成工作的工作人员应该很有用。

将页面添加到 IE 历史记录看起来很简单(IUrlHistoryStg::AddUrl应该这样做)。但是,我对 Firefox 扩展的体验仅限于打包在 XPI 中的小型 chrome hack。

从我最初的阅读来看,我似乎必须创建一个 XPCOM 组件,它将 URL 插入历史。我不确定这是否可以使用 Javascript 来完成,而且我在编写使用 XPCOM 组件的扩展方面没有太多经验。

任何熟悉 Firefox 扩展开发的人都可以指出任何有关编写使用 XPCOM 组件的扩展的教程,尤其是那些使用 C++ 编写的扩展吗?或者是否有任何使用组件的开源扩展,我可以查看以了解更多信息?

0 投票
2 回答
1305 浏览

c++ - 如何从外部应用程序读取使用 FireFox 下载的文件的源 URL?

我有一个我构建的 C++ 应用程序,它被注册为具有特定扩展名的文件的默认处理程序。因此,当我使用 Firefox 从网站下载其中一个文件时,它会将其下载到临时目录,然后 shell 执行我的应用程序,同时在命令行上将完整路径传递给下载的文件。

仅考虑磁盘上的路径,从外部应用程序中找出文件的原始下载 url 是什么的最佳方法是什么?我可以使用 XPCOM API 调用来检查 FireFox 下载管理器数据库吗?

我发现这些数据存储在“%APPData%\Mozilla\Firefox\($profile)\downloads.sqlite”文件中,这是一个 SqlLite 数据库文件,但我真的不想尝试直接打开这个文件FireFox 在运行时对文件有一个打开的写句柄。

在浏览了 Mozilla 开发者中心一段时间后,我遇到了nsIDownloadManager服务,这似乎就是问题所在。但我似乎无法在单独的进程中从 XPCOM 访问它?

这是我正在使用的代码:

当我运行它时,GetServiceByContractID() 调用返回 0x8007000e,它在 nsError.h 中定义为 NS_ERROR_OUT_OF_MEMORY。(我觉得很奇怪)。

这里有什么想法吗?我在吠叫正确的树吗?

0 投票
1 回答
462 浏览

firefox - Calling Firefox XPCOM from external app?

Context: we need to read Firefox cookies in our app; until Firefox 3.5, this was possible by reading cookies.txt / cookies.sqlite. In Firefox 3.5, it exclusively locks the cookie file so outside apps can't read it (see https://bugzilla.mozilla.org/show_bug.cgi?id=476167), and even if we make a local copy, FF doesn't always flush the cookies to disk until exit so they may not be there.

The suggested solution is to use nsICookieManager, which looks like what we need -- but how can I get at one of those from a process that isn't Firefox?

Everything I see about XPCOM suggests I can only use it from firefox extensions -- do we have to write an extension, and then somehow invoke Firefox to install our extension and then somehow invoke the extension itself to pass cookies back out?

0 投票
2 回答
1993 浏览

javascript - 如何使用 URI 创建 nsIFile 对象

我正在为 firefox 制作扩展名,我希望我的扩展名打开一个类似“file:///home/blahblah/foo.txt”的文件,然后将此文件的内容放在文本区域中。使用文件“http://”很容易,但我不能使用“file://”

0 投票
1 回答
207 浏览

javascript - 谷歌不想被内心深处(XPCOM)

我正在尝试制作一个Firefox扩展。为什么当我想使用 document.body.innerHTML = data; 在新打开的选项卡中,它不起作用。这是我的代码:

0 投票
2 回答
805 浏览

javascript - 使用 nsIFileInputStream 和 nsIConverterInputStream 时加载的数据被截断

我正在开发一个项目(BrowserIO - 如果你想查看代码并处理它,请转到 browserio dot googlecode dot com。欢迎帮助!),根据他们的示例,我正在使用 Firefox 的 nsIFileInputStream 和 nsIConverterInputStream ( https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO#Simple ),但只有一部分完整数据被加载。代码是:

如果您想查看此行为,请从 BrowserIO 项目页面签出代码,并使用 Firebugdata = str.value;在 file_io.js 中的行设置断点。然后从列表中选择一个文本文件,然后单击“打开”按钮。在 Firebug 中,在监视面板中为 str.value 设置监视。查看文件...它应该被截断,除非它真的很短。

作为参考,上面的代码是trunk/scripts/file_io.js中openFile()函数的主体。

有人知道这是怎么回事吗?