通过jquery在头部附加脚本

时间:2012-12-11 17:52:20

标签: javascript jquery dom

如果正文中有标记script,我希望将<script>添加到头部,我尝试如下但不起作用,怎么办呢?

DEMO: http://jsfiddle.net/rYXJx/

JS:

var TAREA = $('body').find('textarea').length;

if(TAREA > 0){ 
    $('head').append('<script type="text/javascript" src="files/js/nicEdit.js"></script><script type="text/javascript">bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });</script>');
    };

2 个答案:

答案 0 :(得分:4)

您可以使用jquery getScript函数:

http://api.jquery.com/jQuery.getScript/

所以正确的代码如下所示:

 $.getScript('files/js/niceEdit.js');

答案 1 :(得分:2)

您的脚本中的一个问题是字符串文字中的</script>实际上会破坏外部<script>标记。您可能会注意到页面中的这些字符似乎无处不在:

  

“);};

其次,虽然仍然可以在头部注入<script>标签,但是没有直接/简单/跨浏览器的方式来了解脚本何时完成加载。并且在完全加载之前不能使用脚本。

最佳解决方案是使用提供回调的jQuery.getScript()。使用回调来调用nicEditors.allTextAreas()函数:

$(document).ready(function () {
    if ($("textarea").length > 0) {
        $.getScript("files/js/nicEdit.js", function () {
            // no need for onDomLoaded -- DOM is loaded at this point!
            nicEditors.allTextAreas();
        });
    }
});