Pet*_*one 5 jquery fiddler getscript internet-explorer-11
我正在使用jQuery ajax加载脚本.
这是一个来自加载器代码的剪辑,它的价值.
var resources = ['knockout-3.2.0.js', 'fonts/fontawesome-webfont.eot', ... ];
var retryCount = 0;
load(0);
function load(i) {
if (i == resources.length) {
$("#progBar").width("100%");
$("#progCaption").text("executing App/main...")
var requireScript = document.createElement('script');
requireScript.setAttribute("type", "text/javascript");
requireScript.setAttribute("src", "Scripts/require.js");
requireScript.setAttribute("data-main", "App/main");
head[0].appendChild(requireScript);
}
else {
$("#progBar").width(100 * i / resources.length + "%");
var r = resources[i];
switch (r.substring(r.lastIndexOf('.'))) {
case ".js":
$("#progCaption").text(r);
$.getScript('Scripts/' + r)
.done(function (data) {
retryCount = 0;
load(++i);
})
.error(function (err) {
if (err.status == 404 || retryCount == 3) {
load(++i);
} else {
retryCount++;
console.log('Retry ' + r);
load(i);
}
});
break;
...
Run Code Online (Sandbox Code Playgroud)
getScript的推荐语法只接受一个参数.它是否是有效的URL.因为返回了资源的开头,所以我们知道URL是有效的.调用代码中没有错误,jQuery在将其解析为脚本之前无法获得整个响应.
指向同一个面向公众的服务器,即使err.status报告200 OK,$ .getScript()也会抛出错误.检查数据显示它被截断,并且错误可能是由于截断而导致的JS解析失败.
只有IE11在工作时才会发生这种情况,并且当流量通过Fiddler路由时问题就会停止显示.它在家里的IE11上根本不会发生.更改'knockout-3.2.0.js',为'knockout-3.2.0.debug.js',导致敲除加载没有故障,但bootstrap.js没有缩小,它确实播放,所以它不是没有换行那么简单.我认为这可能是由名称更改修复的某种服务器缓存问题(它不能是浏览器缓存问题,因为getScript应用了cache-buster参数)但我尝试将knockout-3.2.0.js重命名为knockout-3.2 .0.min.js并没有什么区别.
症状相似的问题:
IE通过Ajax返回不完整的HTML这是类似的,但IE11几乎不是一个"较旧"的版本,并且将Fiddler添加到等式修复它,所以问题不太可能是解析打嗝.
Ajax请求返回200 OK,但是触发了错误事件而不是成功在这种情况下,解析失败是由响应的不适当键入引起的,而不是不完整的响应.
我确认在家和工作中的IE都是11.0.9600.17690更新KB3032359.
当我禁用IIS压缩时,问题就消失了.
我不知道它是静态压缩还是动态压缩,因为我同时将它们关闭了.
如果微软的任何人希望调查(如果答案是否定的话,我不会感到惊讶,这有点边缘)...我有客户端和服务器之间失败交换的PCAP文件.
我有一种奇怪的感觉这是相关的为什么IE11创建空白的帖子请求,除非Fiddler正在运行?但我不能说为什么.
一旦文件在缓存中,它们的大小就不再表示,这就是为什么我运行预加载器 - 对于像我这样的SPA来说它是有效的安装.SPA相对于传统应用程序架构的强大论据.但是冗长的设置确实在某种程度上破坏了第一次体验.
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |