0

我需要使用 nsIDOMGlobalPropertyInitializer在具有特定 URL的页面上注入一个名为“smth”的对象。有什么方法可以实现吗?如果 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 对象:(

4

1 回答 1

1

我不知道如果使用这种方法怎么可能,但您至少可以收听“content-document-global-created”通知:https ://developer.mozilla.org/en-US/ docs/Observer_Notifications#Documents并且只注入全局

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 = {};
    }
}
于 2012-10-08T03:46:55.150 回答