【问题标题】:Why does when i dynamically load a script, firefox randomly stop loading the tags scripts?为什么当我动态加载脚本时,firefox 会随机停止加载标签脚本?
【发布时间】:2016-03-30 02:33:00
【问题描述】:

为什么Firefox会随机停止加载js动态添加的<script>标签?
在这张图片上,我动态加载这些脚本并将它们添加到 dom 中

  • "/assets/js/lib/socket.io-1.3.6.js"
  • "/assets/js/lib/tweenmax.min.js"
  • “/assets/js/lib.js”
  • “/assets/js/module.js”
  • “/assets/js/modules”

相当随机,结果是这样,动态加载的随机脚本与其余脚本之间存在很大的延迟(7-15 秒之间)

我实际上是这样加载脚本的

function(url, callback){
    var elem = document.createElement("script");
    elem.async = true;
    elem.src = url;
    elem.type = "text/javascript";
    elem.onload = callback;
    document.getElementsByTagName("body")[0].appendChild(elem);
}

编辑:
当我在我的 html 页面中添加脚本标签时,延迟不会出现,它仅在我使用 JavaScript 加载脚本时才会出现。但我实际上需要用 JavaScript 加载这些脚本。

有一个bug https://jsfiddle.net/ccgb0hqr/ 如果警报出现立即刷新页面,直到错误发生

【问题讨论】:

  • 标签是什么意思??
  • 在页面加载和加载动态脚本的函数运行之间是否有很多处理?
  • 不确定我是否理解正确,但是每次加载脚本时都会运行回调,如果回调需要很长时间,它将推迟以这种方式加载的其他内容。如果可能,在所有脚本加载后运行回调?
  • @AdamJeffers 通过标签表示
  • @Shilly 实际上我在我的电脑上运行它,所以回调应该至少需要 5 毫秒,这在 chrome 上完美运行,但在 Firefox 上,我不知道为什么会出现这种延迟......

标签: javascript firefox browser loading script-tag


【解决方案1】:

看起来 socket.IO 可能需要一些时间来加载,然后触发多个请求,这将阻止您的后续请求(我相信 Firefox 将处理 6 at a time),巧合的是,对 /socket.io 的请求数量相同/,它也可以解释错误的间歇性,因为其他请求可能在 socket.io 初始化之前或之后进入。

尝试排除 socket.io 和/或将其设为最后加载的脚本,看看是否有帮助。

您可能还想调查任何特定的 socket.io 错误,例如 this one

【讨论】:

    【解决方案2】:

    看起来这是 Firefox 的错误。 较新版本的firefox没有这个bug

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多