Теги скрипта, добавленные через jQuery, не отображаются в FireBug - PullRequest
8 голосов
/ 19 июня 2010

Я добавляю <script type="text/javascript" src="http://somedomain/somescript.js"> в заголовок документа через jQuery.Вот код, который я использую:

$(document).ready(function () {
    var s = document.createElement("script");
    s.type = "text/javascript";
    s.src = (document.location.protocol == "https:" ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";
    $("head").append(s);
});

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

$('script[src]').each(function(){
    console.log(this.src);
});

Это нормально или я что-то здесь не так делаю?Меня беспокоит тот факт, что я вижу другие сценарии в разделе заголовка, которые были ленивыми / динамически загруженными, но не те, которые я добавил.Также интересно, нормально ли загружать сценарии, которые управляют DOM, в функции готовности документа.

ОБНОВЛЕНИЕ

Замена кода с:

$("head").append(s);

на

document.getElementsByTagName("head")[0].appendChild(s);

решает проблему.Полученный DOM правильно отображается в FireBug, а jQuery правильно возвращает теги сценария, которые были добавлены статически / динамически.

Ответы [ 4 ]

1 голос
/ 23 июня 2010

Это ошибка в поддержке отладчика Mozilla 'jsd'.Один из обходных путей - публикация вышеупомянутой ошибки:

http://code.google.com/p/fbug/issues/detail?id=1774

Если jquery использует eval () вместо инъекции тега-скрипта, вы можете отладить это в Firebug.

1 голос
/ 22 июня 2010

Хорошо, я нашел этот совет на jQuery.com:

> It should be noted that any attempts to append script elements using this
> method will fail silently:
> $('#element').append("<script></script>");

>> Not exactly. Scripts will be evaluated first, and then discarded.
>> So, if you do this:
>> $('#element').append("<script>alert('hello');</script>");
>> You'll see the alert.

Это, вероятно, означает, что скрипт оценен, но не вставлен в DOM.

1 голос
/ 19 июня 2010

Вы увидите запрос к скрипту на вкладке NET, но тег script не будет виден при проверке DOM.Это похоже на ошибку в FireBug.

0 голосов
/ 19 июня 2010

Протестируйте его и в Chrome , используя опцию «Проверить элемент» правой кнопкой мыши, чтобы использовать полный отладчик (при просмотре исходного кода изменения скрипта не отображаются).На вкладке elements HTML должны отображаться изменения DOM

в реальном времени.
...