2010-02-24 4 views
3

Короче говоря, я работаю над расширением Google Chrome. Расширения не имеют доступа к переменным в области страницы, на которой они работают по умолчанию (вам необходимо обмениваться данными через DOM).Динамическая вставка скрипта с Javascript

Что я пытаюсь сделать, это вставить скрипт на страницу; это отлично работает, определяя тег скрипта и атрибут src.

Проблема заключается в том, что этот скрипт нуждается в переменной, которая должна быть инициализирована заранее. Чтобы инициализировать эту переменную, я пытаюсь создать элемент сценария со своим встроенным кодом (а не загружаться из внешнего источника), но у меня возникают проблемы с его работой.

Возможно ли это, и если да, то как определить источник внутри скрипта? Я попытался добавить текстовый узел, содержащий источник JS, в элемент сценария, но безрезультатно.

+0

Ознакомьтесь с http://stackoverflow.com/questions/2303147/injecting-js-functions-into-the-page-from-a-greasemonkey-script-on-chrome. –

ответ

1

Это отстой, но лучший способ сделать это, вероятно, сообщить свои данные, вводя его в DOM: http://code.google.com/chrome/extensions/content_scripts.html#host-page-communication

Вы также могли бы быть в состоянии сделать это, делая что-то вроде:

var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.text = 'alert("It works!");'; 
document.head.appendChild(script); 

Я не тестировал это, но я предполагаю, что он будет работать из ваших сценариев содержания.

+0

Спасибо, вот что я пытался в действительности. Не уверен, почему он не работал, интересно, было ли это потому, что я пытался использовать appendChild, а не просто устанавливать атрибут .text. – Brad