0

script如果正文中有标签,我想在头部附加<script>,我尝试如下但它不起作用,怎么办?

演示: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>');
    };
4

2 回答 2

4

您可以使用 jquery getScript 函数:

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

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

 $.getScript('files/js/niceEdit.js');
于 2012-12-11T18:14:11.087 回答
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();
        });
    }
});
于 2012-12-11T18:23:38.920 回答