我有一个使用Modernizr.load(又名YepNopeJS)加载各种外部脚本的站点。其中一个脚本是一个小型统计脚本(3,5 kB未压缩),具有非常简单的回调函数:
Modernizr.load({
load: 'http://res.xtractor.no/x.js',
callback: function() { _pxReg(); }
});
_pxReg只是x.js脚本中定义的函数。在大约50%的页面中,我收到错误消息“Undefined variable:_pxReg”(Opera 12)或“'_pxReg'未定义”(Internet Explorer 9)。 Firefox 15和Chrome 22从不出错。重新加载页面时不会发生错误。
这似乎是某种时间错误。在IE开发人员工具中,x.js文件的源在发生错误时为空。这似乎与YepNope(http://yepnopejs.com/#twice)中的双重请求“bug”有关,因为在IE中你得到两个对每个加载的JS文件的引用,其中第一个始终为空。
我本来希望生成一个触发此错误的完整示例,但它似乎与页面的复杂性有关。页面的简化版本永远不会触发此错误。
有没有人知道造成这种情况的原因,以及我该如何解决?网站地址为http://www.husbanken.no/。
答案 0 :(得分:0)
每次资源加载都会发生一次回调, 意味着它将在加载中执行一次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..")}
}])
请告诉我这是否有帮助:)