动态添加javascript以立即执行

动态添加javascript以立即执行,javascript,dom,Javascript,Dom,我正在使用DOM向页面动态添加脚本 如果我添加脚本文本(例如script.text=“…”;),它会立即运行 但是,如果我添加一个外部脚本(例如,script.src=“…”;),它将在脚本完成后运行 在下面的例子中,我将得到 “0 1 2” 及 “3” 分别 (1.js包含相同的字符串-“document.body.innerHTML+=i”) 对于(i=0;i

我正在使用DOM向页面动态添加脚本

  • 如果我添加脚本文本(例如
    script.text=“…”;
    ),它会立即运行

  • 但是,如果我添加一个外部脚本(例如,
    script.src=“…”;
    ),它将在脚本完成后运行

  • 在下面的例子中,我将得到

    “0 1 2”

    “3”

    分别

    (1.js包含相同的字符串-
    “document.body.innerHTML+=i”

    
    对于(i=0;i<3;i++){
    var script=document.createElement('script');
    script.src=“1.js”;
    //script.text=“document.body.innerHTML+=i”;
    document.body.append(脚本);
    };
    

    我不明白为什么会这样,我怎么在添加后立即运行1.js?

    经过多次尝试,我认为这与浏览器的解析有关。动态添加
    脚本时,如果指定了
    src
    ,其内容不会立即加载和运行。其内容的运行时与浏览器不同

    以下代码在chrome、firefox和IE8中运行:

    
    文件
    var script=document.createElement('script')
    script.src='./test.js'//test.js警报(2)
    document.body.appendChild(脚本)
    警报(3)
    警报(8)
    
    外部脚本的动态加载按通过浏览器请求的顺序排队。这意味着它们在下载后不会立即执行

    W3 HTML5规范部分:

    如果元素有属性,则没有属性, 并且没有设置标志

    必须将元素添加到脚本列表的末尾,这些脚本将在算法启动时尽快按顺序执行


    为什么你要一次又一次地把同一个js(“1.js”)添加到body@SourabhSomani因为我希望它以不同的参数一次又一次地运行;为什么加载一个带有不同参数的脚本而不是使用一个带有参数的函数?@lynx'因为我必须使用一个我没有访问权限的外部脚本,只需要调整脚本使用的参数就可以了。这回答了我的第一个问题—“为什么它是这样工作的”。但第二个也是更重要的——“我(有没有办法)强制外部脚本立即运行?”
    <body>
      <script>
        for (i = 0; i < 3; i++) {
          var script = document.createElement('script');
          script.src = "1.js";
          //  script.text = "document.body.innerHTML += i";
          document.body.append(script);
        };
      </script>
    </body>