Я добавляю <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 правильно возвращает теги script, которые были добавлены статичные/динамично.
Хорошо, я нашел этот совет на 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.
Протестируйте его также в Chrome , щелкнув правой кнопкой мыши параметр «Проверить элемент», чтобы использовать полный отладчик (в исходном коде не отображаются изменения скрипта). На вкладке elements HTML должны отображаться изменения в DOM
Это ошибка в поддержке отладчика Mozilla jsd. Одним из способов решения этой проблемы является сообщение об ошибке, указанной выше:
http://code.google.com/p/fbug/issues/detail?id=1774
Если jquery использовал eval () вместо внедрения тега сценария тогда вы можете отладить это в Firebug.
На вкладке NET
вы увидите запрос к сценарию, но тег script
не будет виден при проверке DOM. Это похоже на ошибку в FireBug.