我需要使用nsIDOMGlobalPropertyInitializer将名为“smth”的对象注入带有特定URL的页面上的窗口。有没有办法实现这个?如果window.smth在其他页面上返回undefined,那就没问题了。
// currently
init: function(aWindow) {
let self = this;
let window = XPCNativeWrapper.unwrap(aWindow);
if (window.location.href !== pageURL) {
return;
}
return {
// ...
}
}
现在window.smth在其他页面上返回XPCOM包装的nsISupports对象:(
答案 0 :(得分:1)
我不知道如果可以采用这种方法,但至少可以听取“内容文档 - 全局创建”通知:https://developer.mozilla.org/en-US/docs/Observer_Notifications#Documents并且只注入全局< / p>
observe: function(subject, topic, data) {
if (topic === 'content-document-global-created' &&
subject instanceof Ci.nsIDOMWindow) {
if (!subject.location.href.match(/http:\/\/example.com/)) {return;}
XPCNativeWrapper.unwrap(subject).myGlobal = {};
}
}