0

OK I はコードをできるだけ小さく更新しましたが、それでもエラーが発生します...ただし、質問は正しくありません...「waitFor がサンドボックスから飛び出すのはなぜですか?」となるはずです。(ただし、投稿の質問を変更しないように言われました。これが悪い形式である場合は申し訳ありません)。この拡張機能をインストールして以下の手順に従うと、waitFor がコンテンツ スクリプト サンドボックスの外に転送されます。
このエラーを表示するには.....
に移動します....
https://www.facebook.com/groups/382415791793391/
..ページが完全に読み込まれるまで待ちます。
次に、「Testy Testy」タブをクリックして、ページを更新します。
コンソールを見ると、「これは見えないはずです」と表示されます。
私のコンソール出力は次のようになります....

chekcpage
waitFor
(19)waitFor
pop
attach contentNodeRemoved
chekcpage
waitFor
removing
added
attach contentNodeRemoved
chekcpage
waitFor
(156+)You shouldnt be able to see this

myscript.js

script = function(old) {
    window.variableInUnsafeWindow = "You shouldnt be able to see this";
}
function exec(fn) {
    var script = document.createElement('script');
    script.setAttribute("type", "application/javascript");
    script.textContent = '(' + fn + ')();';
    document.documentElement.appendChild(script); // run the script
    document.documentElement.removeChild(script); // clean up
}
exec(script);


window.onpopstate = function(event) {
    console.debug('pop');
    checkPage();
};


function waitFor(query, delay) {
    if (typeof(variableInUnsafeWindow) == "undefined") {
        console.debug('waitFor');
        found = document.documentElement.querySelector(query);
        if (!found) {
            window.setTimeout("(" + waitFor + ")('" + query + "'," + delay + ");", delay);
        }
    } else {
        console.debug(variableInUnsafeWindow);
        window.setTimeout("(" + waitFor + ")('" + query + "'," + delay + ");", delay);
    }
}

function contentNodeRemoved() {
    console.debug('removing');
    document.querySelector('div#contentCol').removeEventListener('DOMNodeRemoved', contentNodeRemoved, false);
    document.querySelector('div#contentCol').addEventListener('DOMNodeInserted', contentNodeAdded, false);
}

function contentNodeAdded() {
    console.debug('added');
    document.querySelector('div#contentCol').removeEventListener('DOMNodeInserted', contentNodeAdded, false);
    checkPage();
}

function checkPage() {
    if (document.querySelector('div#contentCol')) {
        console.debug('attach contentNodeRemoved');
        var node = document.querySelector('div#contentCol');
        node.addEventListener('DOMNodeRemoved', contentNodeRemoved, false);
    }
    console.debug('chekcpage');
    waitFor('ul#group_mall_382415791793391', 300);
}

checkPage();

マニフェスト.json

{
    "name": "Facebook - Group member ban icon",
    "description": "Puts an X after a users name on the groups page for banning.  Unfortunately the X show on groups your not an Admin of still.",
    "content_scripts": [{
        "matches": ["*://*.facebook.com/*"],
        "js": ["myscript.js"],
        "run_at": "document_start"
    }],
    "permissions": ["tabs"],
    "icons": {
        "16": "icon.png",
        "48": "icon48.png",
        "128": "icon128.png"
    },
    "version": "1.0"
}
4

0 に答える 0