Javascript 动态脚本生成和输出问题

Javascript 动态脚本生成和输出问题,javascript,Javascript,在我的页面上,我需要使用src=some\u external\u path元素创建一个动态脚本。 该脚本元素本身不加载一些JS,需要执行JS intern来提取一些图像内容 我的问题是,在脚本元素中完成JS执行需要一些时间,这是如何实现的 如果我在脚本末尾插入警报或运行一些笨拙的for循环,它就会工作,不幸的是,它不能与setTimeOut函数一起工作 以下是示例代码: var s = document.createElement('script'); s.setAttribute("src"

在我的页面上,我需要使用src=some\u external\u path元素创建一个动态脚本。 该脚本元素本身不加载一些JS,需要执行JS intern来提取一些图像内容

我的问题是,在脚本元素中完成JS执行需要一些时间,这是如何实现的

如果我在脚本末尾插入警报或运行一些笨拙的for循环,它就会工作,不幸的是,它不能与setTimeOut函数一起工作

以下是示例代码:

var s = document.createElement('script');
s.setAttribute("src", "some_external_path");
document.getElementById('test').appendChild(s);

// if i replace that alert - doesn't work, it seems page needs some delay
alert(document.getElementById('test').text);
我也试过这样的方法:

setTimeout(function(scriptElement){
    document.getElementById('test').appendChild(scriptElement);
}, 5000, s);
它也不起作用,我也曾想过在脚本元素中执行代码,但由于安全限制,它似乎不起作用script.text或script.innerHTML返回空字符串

您能提出一些建议,使这段代码在没有循环和可能的自制延迟的情况下完成事务吗


如果您不想使用jQuery,只需查看它是如何完成的,并从中获得灵感。

当您不需要执行以下操作时,无需使用jQuery即可:

var loadScript = function(url, cb){
  var s = document.createElement("script"), done = false;
  s.setAttribute("src", url);
  s.onreadystatechange = s.onload = function(){
  if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
     done = true;
     cb();
    }
  };
  document.getElementsByTagName("head")[0].appendChild(s);
}
你这样称呼它:

loadScript("http://path.to.my/script.js", function(){
  alert("YAY its loaded");
});

我希望这会有所帮助。

在你的每一行后面都放上警报,然后给它们1,2,3,比如,--alert1;2.行代码---alert2等。检查执行订单中是否有smth错误。以及?这就是我所做的,看看代码——它是有效的,但在我的情况下是不可接受的。你能再解释一遍吗。这不完全有道理。这听起来像是你在尝试做一些类似JSONP的功能。不,我不是说放一些警报或smth来让它工作,你的代码可能以错误的顺序执行,例如,在设置属性之前,append child可能工作。检查它,然后让我们考虑其他可能的问题。难道你不能将你的逻辑移到一个由脚本本身调用的函数中吗?这是确保只有在加载脚本时才能继续执行的最简单方法。不幸的是,此函数只是ajax调用的包装器,但我需要从与我的不同的域中获取这些脚本。