2016-03-09 5 views
0

Я разрабатываю расширение хром. Фактически я вставляю некоторые скрипты в событие загрузки страницы, но это вызывает уродливое поведение (я удаляю некоторые элементы). По этой причине я хочу добавить некоторые сценарии сразу после загрузки DOM, много лет назад я смог это сделать, но теперь это невозможно для меня.Расширение Chrome: сценарий ввода на Dom загружен

Знаете ли вы, если это возможно в текущей версии и как это сделать?

EDIT:

Это мой текущий код:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if (changeInfo.status === 'complete') { 
     chrome.tabs.executeScript(tabId,{'file':'onLoad.js'}); 
    } 
}); 

Большое спасибо заранее за любую помощь.

+0

Пожалуйста, создать и опубликовать [минимальный, полный и проверяемый] (http://stackoverflow.com/help/mcve) пример ... Его трудно догадаться, что вы пытаетесь сделать, и что ошибка ... – Aditya

+0

По крайней мере, объясните, что вы подразумеваете под уродливым поведением - и почему вы не можете повторить то, что вы делали много лет назад. – Xan

+0

Привет. Это довольно просто, я удаляю некоторые элементы со страницы, так как это происходит после загрузки, вы можете увидеть, как элемент исчезает через несколько секунд, изменяя макет на веб-странице, поэтому я хочу сделать это до отображения элементов сразу после загрузка DOM. Я смог сделать это до того, как Chrome изменит политику расширений и способ захвата событий в вкладках и сценариях ввода. – Iskariote

ответ

0

Учитывая ваше намерение

Я хочу, чтобы удалить элемент из DOM перед загрузкой любого ресурса

Вы можете посмотреть на content scripts и обратитесь к run_at части. Вы можете установить "run_at": "document_end", который гарантирует, что ваш код будет введен после завершения DOM, но до того, как будут загружены другие ресурсы.

В случае «document_end», файлы вводят сразу после того, как DOM будет завершена, но перед subresources как изображения и кадры загружены.

+0

Обратите внимание, что инъекция в 'changeInfo.status === 'complete'' будет в любом случае отрицать это, поскольку она срабатывает после загрузки подресурсов. – Xan

+0

@Xan, поэтому я просто рекомендую сделать это через 'manifest.json', не вводя через код. –

+0

Это зависит от того, почему в первую очередь используется программная инъекция. Если фрагмент в вопросе является актуальным, не обрезанным кодом, то, конечно, решение на основе манифеста лучше. В противном случае нужно упомянуть, что статус «полный» слишком поздно делать. – Xan

Смежные вопросы