动态地将脚本标记添加到加载的HTML - IE7和8中的错误

时间:2011-12-15 21:24:50

标签: javascript jquery html ajax

我已经坚持了很长一段时间 - 任何帮助都会非常感激。

基本上我将HTML加载到页面中,但加载的HTML需要在其中包含特定位置的外部脚本。我发现最好的方法是使用以下代码:

$('#blah').load('blah.htm',
    function(){
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = "[external script url + query string here]";
        $('#blah_blah')[0].appendChild(script);                 
});

编辑: 我使用“appendChild”而不是jQuery的“追加”的原因是$ .append将脚本创建的视频播放器添加到完全错误的元素中。如果我使用appendChild,它将被添加到指定的正确元素。我认为这可能与jQuery的插入方法有关,如本答案中所述: Can't append <script> element

我正在使用的代码在Firefox和Chrome中运行良好,但在IE7&amp; 8我收到错误消息“无法获取属性的值'appendChild':对象为null或未定义”,并且在DOM中无法看到脚本标记。

如果我包含该行:

$("#blah_blah")[0].appendChild(document.createTextNode("test"));

文本节点“test”被添加到DOM中,并且可以在页面上看到 - 因此看起来“appendChild”确实有效,但是附加脚本标记存在问题。

可能是IE特定的安全问题吗?

1 个答案:

答案 0 :(得分:2)

出了什么问题:

   $.getScript("script.js");