【发布时间】:2011-03-05 18:33:34
【问题描述】:
我通过 jQuery 将 <script type="text/javascript" src="http://somedomain/somescript.js"> 添加到文档头部。这是我使用的代码:
$(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 检查文档头时,我看不到头中的脚本。这个 sn-p 也不显示添加的脚本:
$('script[src]').each(function(){
console.log(this.src);
});
这是正常的还是我在这里做错了什么?困扰我的是,我在 head 部分看到其他脚本是惰性/动态加载的,但不是我添加的那些。还想知道是否可以在文档就绪函数中加载操作 DOM 的脚本。
更新
替换代码:
$("head").append(s);
到
document.getElementsByTagName("head")[0].appendChild(s);
解决了这个问题。生成的 DOM 在 FireBug 中正确显示,并且 jQuery 正确返回静态/动态添加的脚本标签。
【问题讨论】:
-
我相信这是正常的。 Firebug 说“警告。页面加载期间脚本面板处于非活动状态 - 重新加载以查看所有源”。这表明只能调试页面加载时可用的脚本。
-
一个 jQuery 大师能否验证通过
$.append方法添加的<script>没有物理添加到 DOM 中,而只是evaluated? -
你为什么不使用 $.getScript() ? api.jquery.com/jQuery.getScript
-
我认为默认情况下
$.getScript会尝试避免浏览器缓存,在这种特殊情况下我不希望这样做。 -
试试
$(document.head).append(s);。
标签: javascript jquery debugging firebug