Firefox addon 如何在a中操作窗口原型<;浏览器>;元素?

Firefox addon 如何在a中操作窗口原型<;浏览器>;元素?,firefox-addon,xul,xpcom,Firefox Addon,Xul,Xpcom,我现在正在做的是: 加载时,我将数据附加到其.contentWindow: frame.addEventListener(“加载”,函数(){ this.contentWindow.someMethod=函数(){}; },对); 现在,我想知道是否有一种方法可以在的窗口原型或任何窗口原型中执行此操作,例如,我可以在“当前”窗口中执行此操作: /[W]indow是构造函数 Window.prototype.test=function(){alert(“hello”);}; //[w]indow

我现在正在做的是:

加载
时,我将数据附加到其
.contentWindow

frame.addEventListener(“加载”,函数(){
this.contentWindow.someMethod=函数(){};
},对);
现在,我想知道是否有一种方法可以在
的窗口原型或任何窗口原型中执行此操作,例如,我可以在“当前”窗口中执行此操作:

/[W]indow是构造函数
Window.prototype.test=function(){alert(“hello”);};
//[w]indow就是一个例子
window.test();

在任何JavaScript代码运行之前,当前有两种方法将属性注入窗口。通常情况下,它更简单。另一个是。两者都允许您在加载新窗口时以及在该窗口运行JavaScript代码之前收到通知

以下是使用观察者通知执行此操作的大致代码:

const Cc=Components.class;
const Ci=组件。接口;
const Cu=Components.utils;
特写:进口resource://gre/modules/XPCOMUtils.jsm");
var myObserver=
{
QueryInterface:XPCOMUtils.generateQI([Ci.nsIObserver,Ci.nsiSupportsWakReference]),
观察:功能(主题、主题、数据)
{
如果(主题==“内容文档全局已创建”&&
Ci.nsIDOMWindow的主题实例&&
subject.location.hostname==“example.com”)
{
XPCNativeWrapper.unwrap(subject).someMethod=function(){};
}
}
};
var observerService=Cc[“@mozilla.org/observer service;1”]
.getService(Ci.nsIObserverService);
addObserver(myObserver,“内容文档全局创建”,true);

在任何JavaScript代码运行之前,当前有两种方法将属性注入窗口。通常情况下,它更简单。另一个是。两者都允许您在加载新窗口时以及在该窗口运行JavaScript代码之前收到通知

以下是使用观察者通知执行此操作的大致代码:

const Cc=Components.class;
const Ci=组件。接口;
const Cu=Components.utils;
特写:进口resource://gre/modules/XPCOMUtils.jsm");
var myObserver=
{
QueryInterface:XPCOMUtils.generateQI([Ci.nsIObserver,Ci.nsiSupportsWakReference]),
观察:功能(主题、主题、数据)
{
如果(主题==“内容文档全局已创建”&&
Ci.nsIDOMWindow的主题实例&&
subject.location.hostname==“example.com”)
{
XPCNativeWrapper.unwrap(subject).someMethod=function(){};
}
}
};
var observerService=Cc[“@mozilla.org/observer service;1”]
.getService(Ci.nsIObserverService);
addObserver(myObserver,“内容文档全局创建”,true);

@Wladimir-您能否指定将此代码准确放置在何处?我试图将其放入.xul文件中元素中引用的脚本中,但似乎没有任何效果。@Wladimir-您能指定将此代码放在何处吗?我试图将其放入.xul文件中元素中引用的脚本中,但似乎没有任何效果。