YepNopeJS:在小JS文件完全加载之前触发回调

YepNopeJS: callback triggered before tiny JS file is fully loaded

本文关键字:回调 加载 在小 JS 文件 YepNopeJS      更新时间:2023-09-26

我有一个网站,它正在使用Modernizr.load(又名YepNopeJS)加载各种外部脚本。其中一个脚本是一个小的统计脚本(3.5 kB未压缩),带有一个非常简单的回调函数:

Modernizr.load({
  load: 'http://res.xtractor.no/x.js',
  callback: function() { _pxReg(); }
});

_pxReg只是在x.js脚本中定义的一个函数。在我大约50%的页面中,我收到一条错误消息"未定义变量:_pxReg"(Opera 12)或"'_pxReg'未定义"(Internet Explorer 9)。Firefox 15和Chrome 22从不出错。重新加载页面时永远不会发生错误。

这似乎是某种定时错误。在IE开发工具中,x.js文件的源在错误发生时是空的。这似乎与YepNope中的双重请求"错误"有关(http://yepnopejs.com/#twice),因为在IE中,每个加载的JS文件都有两个引用,其中第一个总是空的。

我本想制作一个完整的例子来触发这个错误,但它似乎与页面的复杂性有关。页面的简化版本从未触发此错误。

有人知道是什么原因造成的吗?我应该如何解决?站点地址为http://www.husbanken.no/.

每次资源加载回调一次,这意味着它将在加载中为n执行一次:['x.js','y.js']

如果您使用yepnope.js加载资源(基本上是Modernizr.load功能:前缀、超时等)并提供回调,您可以在关闭并执行这样的功能:

yepnope([{
    load : {'x':'//x.js'},
    callback : function(url, result, key){
        if("x" === key && result === true) { _pxReg() };
    },
    complete : function(){ console.log("all done..")}
}])

如果这有帮助,请告诉我:)