Javascript必须单击两次按钮才能加载和运行动态脚本

Javascript必须单击两次按钮才能加载和运行动态脚本,javascript,button,dynamic,loading,Javascript,Button,Dynamic,Loading,我第一次点击按钮时,什么都没有。第二次单击“代码运行”。我在chrome或IE中运行test.html页面,这无关紧要。如何让加载的脚本中的代码运行第一次单击?我是个笨蛋 /* test.html */ <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>start</title> &l

我第一次点击按钮时,什么都没有。第二次单击“代码运行”。我在chrome或IE中运行test.html页面,这无关紧要。如何让加载的脚本中的代码运行第一次单击?我是个笨蛋

/* test.html */
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>start</title>
  <script type="text/javascript" src="t01.js">
</script>
</head>
<body>
   <input type="text" id="txt1" />
        <input type="button" id="submit" onclick="getSent(document.getElementById('txt1').value)"
            value=" OK " />
    <div id="reply">reply</div>
</body>
</html>


/* t01.js */
window.onload = function () {
}
function getSent(str) {
    while (1) {

        load_script("relg.js");
        dof();

        reply = "Reached end of loop.";
        break;
    } // end main loop
    document.getElementById("reply").innerHTML = reply;

}
function load_script(filename){
  var fileref=document.createElement('script');
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", filename);
  if (typeof fileref!="undefined")
    document.getElementsByTagName("head")[0].appendChild(fileref);
}

/* relg.js */
function dof() {
    alert("b");
}
/*test.html*/
开始
回复
/*t01.js*/
window.onload=函数(){
}
函数getSent(str){
而(1){
加载_脚本(“relg.js”);
dof();
reply=“已到达循环的末尾。”;
打破
}//结束主回路
document.getElementById(“reply”).innerHTML=reply;
}
函数加载_脚本(文件名){
var fileref=document.createElement('script');
setAttribute(“类型”、“文本/javascript”);
fileref.setAttribute(“src”,文件名);
if(fileref的类型!=“未定义”)
document.getElementsByTagName(“head”)[0].appendChild(fileref);
}
/*relg.js*/
函数dof(){
警报(“b”);
}

加载脚本需要一些时间,请尝试以下操作:

function getSent(str) {
    load_script("relg.js");
    return; 
}
function load_script(filename){
    var fileref=document.createElement('script');
    fileref.setAttribute("type","text/javascript");
    fileref.onload = function () {
        dof();
        return;
    }
    fileref.setAttribute("src", filename);
    document.getElementsByTagName("head")[0].appendChild(fileref);
}
另一种方法是为
regl.js
创建IIFE(立即调用的函数表达式),而不在主脚本中调用
dof()

(function dof() {
    alert("b");
}());
现在,
dof()
将在解析到页面后立即执行