我应该使用哪些XPCOM接口来检测选项卡的打开,关闭和切换,还可以从firefox扩展中获取相关的URL?我已经看到了在JS中管理选项卡的代码实例,但是从C++开始呢?
我正在创建一个firefox扩展.我想在JSM文件中获取对窗口对象的引用.
然后使用导入文件
Components.utils.import("resource://js/my_module.jsm");
Run Code Online (Sandbox Code Playgroud)
在my_module.jsm中有这一行:
var jQenv = window.content.document;
Run Code Online (Sandbox Code Playgroud)
抛出错误,"窗口未定义"
如何访问JSM文件中的窗口对象?
我正在测试一个包含Firefox扩展作为一个组件的应用程序.它最初是在FF3.5.5是最新版本时部署的,并且在3.5.6和3.5.7中幸存下来.但是在FF3.6上我在我的错误控制台中得到以下内容:
Warning: reference to undefined property Components.interfaces.nsIProcess2
Source file: chrome://overthewall/content/otwhelper.js
Line: 55
Error: Component returned failure code: 0x80570018 (NS_ERROR_XPC_BAD_IID)
[nsIJSCID.createInstance]
Source file: chrome://overthewall/content/otwhelper.js
Line: 55
Run Code Online (Sandbox Code Playgroud)
抛出错误的函数是:
48 function otwRunHelper(cmd, aCallback) {
49 var file =
50 Components.classes["@mozilla.org/file/local;1"].
51 createInstance(Components.interfaces.nsILocalFile);
52 file.initWithPath(otwRegInstallDir+'otwhelper.exe');
53
54 otwProcess = Components.classes["@mozilla.org/process/util;1"]
55 .createInstance(Components.interfaces.nsIProcess2);
56
57 otwProcess.init(file);
58 var params = new Array();
59 params = cmd.split(' ');
60
61 otwNextCallback = aCallback;
62 otwObserver = new otwHelperProcess();
63 otwProcess.runAsync(params, params.length, otwObserver, false);
64 }
Run Code Online (Sandbox Code Playgroud)
如您所见,所有这些函数都运行一个外部EXE帮助文件(由注册表项定位)和一些命令行参数,并设置一个Observer以异步等待响应并处理Exit代码. …
提前感谢大家 -
我需要在启动时加载任何窗口之前加载首选项.下面是我一直在使用的一些/组件代码.SetPreference方法在调用时似乎失败了(之后没有任何执行) - 我假设因为它所需的资源在执行时不可用......或者我做错了.有关此代码的任何建议或在启动时设置首选项的其他方法吗?
再次感谢,
山姆
出于某种原因,SO的代码格式无法正常工作 - 这里也是代码的链接 - http://samingrassia.com/_FILES/startup.js
Components.utils.import('resource://gre/modules/XPCOMUtils.jsm');
const Cc = Components.classes;
const Ci = Components.interfaces;
const ObserverService = Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService);
function MyStartupService() {};
MyStartupService.prototype = {
observe : function(aSubject, aTopic, aData) {
switch (aTopic) {
case 'xpcom-startup':
this.SetPreference("my.extension.is_running", "false");
break;
case 'app-startup':
this.SetPreference("my.extension.is_running", "false");
ObserverService.addObserver(this, 'final-ui-startup', false);
break;
case 'final-ui-startup':
//make sure is_running is set to false
this.SetPreference("my.extension.is_running", "false");
ObserverService.removeObserver(this, 'final-ui-startup');
const WindowWatcher = Cc['@mozilla.org/embedcomp/window-watcher;1'].getService(Ci.nsIWindowWatcher);
WindowWatcher.registerNotification(this);
break;
case 'domwindowopened':
this.initWindow(aSubject);
break;
}
},
SetPreference : …Run Code Online (Sandbox Code Playgroud) 我正在使用xul来编写firefox扩展,因此我需要从本地文件读取/写入.如何在以下目录"c:/ data"中创建例如文件"temp.txt "?
我有一个在localhost(127.0.0.1)上运行的代理服务器,我已经厌倦了培训用户如何在firefox中切换代理以绕过被阻止的网站.
我决定写一个插件.我想知道如何使用xpcom告诉firefox使用某个代理例如
http,使用127.0.0.1端口8080.
互联网上的例子很少.
谢谢
我刚刚加入了一个网站项目。为了进行处理,我克隆了git repo并在VPS上设置了一个新的LEMP堆栈来服务该页面。要使该程序运行,需要花费大量的工作(我的第一次尝试是在笔记本电脑上,甚至无法正常运行第一个index.php)。现在我可以显示主页,除了字体之外的所有内容似乎都可以加载。
有许多链接可以动态生成页面。在最终产品上,将使用新数据创建这些数据。目前,数据只是从数据库中提取的,因此我们可以调整其显示方式。我的问题是这些页面不会大量加载。我可以在Windows 7,Fedora或Debian的Firefox,Chrome,Brave或Konqueror中尝试此操作都没有关系。
Wactching FF的开发工具,服务器批准请求并提供页面(代码200),但是页面上没有呈现任何内容(黑屏),控制台中也没有显示任何内容。除非我运行AdBlock Ultimate之类的基于JS的扩展程序,否则JS调试器也不会显示任何内容。如果我正在运行AdBlock,则页面的名称将显示在Sources下,并且唯一的错误是:
Error loading this URL: Could not load the source for http://dubyahdubyah/reports/view/506.
[Exception... "Component returned failure code: 0x80470002 (NS_BASE_STREAM_CLOSED) [nsIInputStream.available]" nsresult: "0x80470002 (NS_BASE_STREAM_CLOSED)" location: "JS frame :: resource://gre/modules/commonjs/toolkit/loader.js -> resource://devtools/shared/DevToolsUtils.js :: onResponse :: line 453" data: no]
Stack: onResponse@resource://gre/modules/commonjs/toolkit/loader.js -> resource://devtools/shared/DevToolsUtils.js:453:23
onStopRequest@resource://gre/modules/NetUtil.jsm:128:17
Line: 453, column: 0
Run Code Online (Sandbox Code Playgroud)
我整天都在搜索谷歌,我厌倦了用键盘敲打我的头。