Как я могу изменить веб-страницу с помощью скрипта контента Google Chrome до обработки DOM? - PullRequest
7 голосов
/ 10 июня 2011

С помощью скриптов содержимого Chrome я хочу удалить несколько фреймов с веб-страницы перед их загрузкой.

Я обнаружил, что при использовании свойства run_at: document_start в манифесте расширений мой javascript выполняется сразу после запроса главной страницы и до обработки DOM и загрузки изображений, фреймов и т. Д.Логично, что на данный момент структура DOM недоступна, и я не могу изменить страницу, используя такие команды, как:

myelement=document.getElementById('iframeX');

myelement.parentNode.removeChild(myelement);

Как я могу получить доступ и изменить запрашиваемые данные страницы тогда?

Ответы [ 2 ]

7 голосов
/ 11 июня 2011

Вам нужно запустить скрипт контента на document_start и добавить прослушиватель перед загрузкой - вы можете использовать event.preventDefault, чтобы выборочно заблокировать загрузку контента, а затем удалить фрейм, который пытался загрузить контент:

    document.addEventListener('beforeload', function(event) {
        if (event.url.match('facebook')) {
            event.preventDefault();
            $(event.target).remove();
        }
    }, false);

Я написал в блоге об эквивалентном подходе к использованию события предварительной загрузки для Firefox .

2 голосов
/ 21 января 2012

Для этого файл manifest.json должен содержать content_scripts, например:

"content_scripts": [
    {   
        "matches": ["*://*/*"], 
        "js": [ "scan.js" ],
        "run_at": "document_start",
        "all_frames" : true
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...