动态脚本生成和输出问题

Dynamic script generation and output issues

本文关键字:输出 出问题 脚本 动态      更新时间:2023-09-26

在我的页面上,我需要与src=some_external_path元素制作一个动态脚本。该脚本元素下载了一些JS内部和JS实习生需要执行,以提取一些图像内容。

我的问题是,它需要一些时间来完成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);

它也不起作用,我也想过在脚本元素内执行代码,但由于安全限制(脚本),它似乎不起作用。文本或脚本。

你能建议什么使这个代码完整的交易没有循环和希望自制延迟吗?

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

如果您不想使用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");
});