Как я могу сказать динамически вставленный тег <script>, чтобы ... запустить - PullRequest
7 голосов
/ 11 февраля 2011

Я динамически вставляю тег <script> с атрибутом src без содержимого.Но браузер не запускает этот src и не запускает скрипт после вставки - тег просто сидит в DOM.

Могу ли я сказать браузеру "запустить" тег скрипта?

Из-за другого кода, с которым я работаю, мне проще сохранять код, извлекаемый с помощью атрибута src, чем самому извлекать его и вставлять в тело тега - но еслиэто необходимо, я тоже могу это сделать (и приветствую любые советы по этому поводу).

обновление с запрошенной информацией

  1. Тег сценария вставляется в зависимости от пользователявзаимодействовать произвольное количество раз после загрузки страницы
  2. Я вставил тег следующим образом (функция html jquery удаляет теги скрипта): document.getElementById("my-div").innerHTML = "the script tag, which stack overflow wants to strip";

Ответы [ 3 ]

4 голосов
/ 12 февраля 2011

Попробуйте следующий код :: Работает

  var script = document.createElement( 'script' );
  script.type = 'text/javascript'; 
  script.src =MY_URL; 
  $("#YOUR_ELEMNT_ID").append( script );
1 голос
/ 12 февраля 2011

он должен работать сразу после того, как браузер вставит скрипт в dom, но вы можете попытаться обернуть ваш скрипт в функцию и вызвать эту функцию после загрузки скрипта:

var script = document.createElement('script');
script.setAttribute('type','text/javascript'); 
script.setAttribute('src',script_url); 
script.onreadystatechange= function () {
    if (this.readyState == 'complete') 
        initScript();//the whole script is wrapped in this function
}
script.onload= initScript;

Надеюсь, это поможет!

0 голосов
/ 11 февраля 2011

Вы можете использовать setTimeout в главном скрипте, чтобы проверить, есть ли новый скрипт ... и если он есть, запустите его.Вы знаете, загружает ли он файл или он просто ничего не делает?Проверьте с помощью сетевого монитора Chrome.

Я думаю, что есть динамический способ загрузки Javascript без тега src =, но я лично этого не делал.

Почему бы неjavascript предварительно загружен и просто пропущен через встроенный JS для его выполнения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...