1

一連の window.navigator プロパティへの呼び出しをログに記録する次のコードがあります。

        var navigatorProperties = [ "appCodeName", "appMinorVersion", "appName", "appVersion", "cookieEnabled", "cpuClass", "onLine", "opsProfile", "platform", "product", "systemLanguage", "userAgent", "userLanguage", "userProfile" ];

        var contentStorage = {}; 

        navigatorProperties.forEach(
            function(property) {
                contentStorage["window.navigator." + property] = window.navigator[property];

                Object.defineProperty(window.navigator, property, {
                    configurable: true,
                    get: function() { logValue("window.navigator." + property, contentStorage["window.navigator." + property], "get"); return contentStorage["window.navigator." + property] },
                    set: function(value) { logValue("window.navigator." + property, contentStorage["window.navigator." + property], "set"); contentStorage["window.navigator." + property] = value; } 
                });
            });

このコードが通常の Web ページに存在する場合、console.log('local page: ' + window.navigator.product); のような定義済みおよび監視プロパティへの呼び出し。つまり、logValue 実行出力が得られます。ただし、このコードを、ページ mod API を介して挿入するアドオン SDK ビルドの拡張コンテンツ注入スクリプトに配置したいと考えています。それを行って、私が監視しているプロパティを変更またはアクセスするページに移動すると、logValue が発生することはありません。window を unsafeWindow に置き換えてみましたが、うまくいきませんでした。アドオンを介して挿入されたときにこのコードが機能しない理由について、誰かが私に何かポインタを持っていますか?

4

0 に答える 0