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 に答える