Расширение Chrome запускается при запуске документа - PullRequest
1 голос
/ 12 февраля 2012

У меня есть скрипт, который я хочу вставить в документ ДО загрузки.IE;он должен работать так, как если бы

<script..>MYSCRIPT HERE</script>

<html>
.
.

Я сделал скрипт в Chrome, который выполняется правильно (я могу предупредить (0) и т. д.), но он работает в другой среде, а это не то, что мне нужно.Я хочу, чтобы он работал в той же среде как страница.

Ранее я использовал трюк, когда в скрипте запуска я использовал

window.location="javascript:<MY SCRIPT HERE>"

, который эффективно изменяет среду выполнения, но дляпоследние несколько дней это не работает.Я думаю, это исправление ошибки Chrome.Есть ли другой обходной путь для этого?Примечание. Я не могу динамически добавлять теги сценария на страницу в сценарии запуска, потому что document.body и т. Д. Недоступны.

Я хотел бы предоставить вам более подробную информацию о том, зачем мне это и мое предыдущее решение.HTML-страница, которую я не могу контролировать:

.
.
<script>
function a(){//DOSOMETHING}
</script>
.
.
<script>
a(); <<------ I DONT WANT TO CALL THIS
</script>

Драгоценное решение: при запуске javascript содержит

window.location='javascript:const a=function(){};';<<-CONST used!!

^^. Это приведет к ошибке повторного объявления «a», когдастраница действительно загружается, следовательно, когда вызывается a (), ничего не происходит.(умно, верно? -_-)

Но теперь я понял, что когда я делаю window.location = "js: ..", даже это работает в отдельном env!

Помогите!:)

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Вы должны иметь возможность внедрить скрипт в контекст JavaScript страницы, добавив тег script через ваш скрипт контента.Другими словами, ваш скрипт может быть введен в document_idle и выполнить что-то вроде:

var s = document.createElement('script');
s.textContent = 'const a = function () {};';
document.documentElement.appendChild(s);

Этот тег скрипта будет выполняться в контексте страницы, а не в контексте вашего скрипта, идолжен позволить вам достичь желаемого результата.

Документация для сценариев содержимого в целом доступна по адресу https://developer.chrome.com/extensions/content_scripts

0 голосов
/ 23 февраля 2012

Chrome, вероятно, имеет ошибку в текущей сборке, как указал PAEz. Но да, многое из того, что можно внедрить в «документ», используя расширение chrome. Спасибо Майк за пост. Запомните это в следующий раз, когда я сделаю инъекцию, используя greesemonkey или что-то еще:)

...