我有一个网站,它使用 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 中的双重请求“bug”有关(http://yepnopejs.com/#twice),因为在 IE 中,您会获得对每个加载的 JS 文件的两个引用,其中第一个引用始终为空。
我本来想生成一个触发此错误的完整示例,但它似乎与页面的复杂性有关。页面的简化版本永远不会触发此错误。
有谁知道可能导致此问题的原因以及我应该如何解决它?网站地址是http://www.husbanken.no/.
每次资源加载时都会发生一次回调,
这意味着它将在 load 中执行一次 for 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..")}
}])
让我知道这是否有帮助:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)