之前在某一点上我的javascript我见(使用Modernizr的2.6.2)以下内容:Modernizr.load回调执行已加载脚本
Modernizr.load([{
load: '/path/file.js',
complete: function() {
//do stuff
}
}]);
它的伟大工程的大部分时间,除了在IE8,约3次中的1次,它首先执行回调,然后加载脚本。我在回调中添加了一个断点,另一个在file.js中添加了一个断点。这两个脚本正在执行,只是有时交换订单。
我试图分离和重现错误,但我不能。当我在页面上只有这个代码时(每次使用完全相同的Modernizr文件),它都可以正常工作。出于这个原因,我相信我项目上的其他东西可能会干扰,但我不知道沿着js的10000(真的!有没有人遇到过类似的事情,或者对可能导致此类行为的事情有所了解?
我不想为这个特定情况寻找解决方法。这是我真正想保持原样的许多情况之一。
编辑1 - 最新资讯: 使用网络面板,我可以看到有两个请求被做(which is expected),但在第一次请求总是返回空白。第二个请求会显示正确的内容。在两个请求完成后执行回调时,这种方式正常工作,但有时会在第一个(空)和第二个请求之间执行回调。那是当它崩溃!
编辑2 - 新信息:好吧,好像我现在可以重现它。为了100%确定我的假设,我必须知道深层的JavaScript引擎,我不知道,所以我可能会错误的,但这里是我发现的:
请求file1.js和file2。 JS。如果file2在引擎忙于执行file1的回调时完成加载,则file2执行会在队列末尾的某处进行,这意味着在file2的回调之后。
“10000(!真的)JS行”你疯了吗?谁会开发这个?谁来运行?我正在考虑https://www.healthcare.gov – bjb568
五个前端开发人员会在11个月内开发它=) –
这并不能解释谁来运行它。即使服务器不得不向浏览器的脸部扔出10000行馅饼,它也会窒息。 – bjb568