如何将动态插入的<script>标记告诉... run </script>

时间:2011-02-11 20:36:40

标签: javascript jquery dom

我正在动态插入<script>标记,其中包含src属性且没有内容。但是浏览器没有下拉src并在插入后运行脚本 - 标签就位于DOM中。

我可以告诉浏览器“运行”脚本标记吗?

由于我正在使用的其他代码,我更容易通过src属性保存代码,而不是自己获取代码并将其插入到标记的正文中 - 但如果是必要的,我也可以这样做(并欢迎任何建议)。

使用所需信息进行更新

  1. 在页面加载
  2. 后,基于用户交互插入脚本标记任意次数
  3. 我插入了这样的标签(jquery的html函数去除了脚本标签):document.getElementById("my-div").innerHTML = "the script tag, which stack overflow wants to strip";

3 个答案:

答案 0 :(得分:4)

尝试以下代码::其工作

  var script = document.createElement( 'script' );
  script.type = 'text/javascript'; 
  script.src =MY_URL; 
  $("#YOUR_ELEMNT_ID").append( script );

答案 1 :(得分:1)

它应该在浏览器将脚本插入dom后立即运行,但您可以尝试将脚本包装到函数中并在脚本加载后调用该函数:

var script = document.createElement('script');
script.setAttribute('type','text/javascript'); 
script.setAttribute('src',script_url); 
script.onreadystatechange= function () {
    if (this.readyState == 'complete') 
        initScript();//the whole script is wrapped in this function
}
script.onload= initScript;

希望这有帮助!

答案 2 :(得分:0)

您可以在主脚本中使用setTimeout来检查新脚本是否存在..如果是,则运行它。你知道它是下载文件还是只是什么都没有?查看Chrome的网络监视器。

我认为有一种动态的方式来加载没有src =标签的Javascript,但我还没有亲自完成它。

为什么不预先加载所有的javascript,只是通过一些内联JS来执行它?