【问题标题】:Why does IE11 seem to be truncating my JS file?为什么 IE11 似乎截断了我的 JS 文件?
【发布时间】:2020-07-10 22:13:24
【问题描述】:

编辑:我想我解决了这个问题,而且我认为它与 Angular 的关系比我想象的要多。该脚本实际上是在一个粗箭头上中断,但由于代码的缩小,很难看到这一点。这个脚本是全局脚本,项目构建时显然不是 babel 编译的。我以为 IE11 支持胖箭头,但显然不支持?这已通过将文件中的任何粗箭头转换为传统的函数声明来解决。

完全披露,我正在使用 Angular 7,但目前我没有理由相信它是相关的。

我正在我的网站上加载第三方 JavaScript,并且脚本已被混淆(?)并在某种程度上缩小了(由第三方,我无权访问原始代码)。代码被拼成了一行很长,难以理解的代码,函数名已经转换为十六进制值?代码的这一方面让我感到困惑,因为它似乎不是代码自己构建和/或在客户端上提供可用英文调用的东西的混淆。据我所知,将函数命名为十六进制值只会使代码语义变得晦涩难懂。同样,我认为这不一定与我的问题有关。

我试图从这个文件中调用一个函数,这个调用在非 IE 浏览器中运行良好,但该函数在 IE11 中未定义。

当我查看加载文件的请求时,比较 Firefox 和 IE11,我注意到有些奇怪。为简洁起见,我发布了文件内容的 END 的屏幕截图,因为代码很长,而且我认为没有必要显示整个文件来提出我的问题。

在 FF 响应预览中,以及在新选项卡中打开响应时,我看到了完整的文件内容,包括我尝试调用的函数声明:

在 IE 响应预览中和复制实际响应负载时,我看到文件的截断版本,并且文件在我尝试调用的函数声明之前结束:

谁能解释一下 IE11 上负载的这种差异?我记得旧版本的 IE 截断大量代码,但我相信 IE 的文件大小限制在 IE11 中大大增加,我的文件只有 25kb。

最后,我注意到的另一个奇怪之处是,当我直接从 FF 预览中复制和粘贴响应负载时,粘贴的代码会被截断,就像 IE 负载似乎在完全相同的位置一样。

【问题讨论】:

  • 尝试将脚本加载到每个浏览器的选项卡中,并使用 Save As... 设备使用 Diff 或您的 IDE 比较它们。我想知道这是否只是开发者工具栏预览窗口中的一个奇怪之处。
  • @halfer 不仅仅是预览不同。当您打开实际有效负载时,IE 版本上的文件会被明显截断
  • 也许你在被截断的地方有一个“空”字符,可能会解释一下。
  • 好的,您可以通过 Curl 或 Postman 抓取文件以查看文件的规范版本吗?
  • 我最好的猜测是检查 Content-Length 标头是否与实际文件大小匹配,同时考虑到这可能会因传输编码而有所不同...尝试在不同的网络应用程序上运行网络服务器,尝试不同的 gzip 设置,并在你的网络服务器上尽可能地压缩传输编码......在网上搜索,我发现很多关于 IE6 的投诉,直到 Edge 截断下载的文件。没有找到解决方案,但它通常与内容长度、gzip 和/或 deflate 相关。

标签: javascript angular internet-explorer-11


【解决方案1】:

我想我已经解决了这个问题,而且我认为它与 Angular 的关系比我想象的要多。该脚本实际上是在一个粗箭头上中断,但由于代码的缩小,很难看到这一点。这个脚本是全局脚本,项目构建时显然不是 babel 编译的。我以为 IE11 支持胖箭头,但显然不支持?这已通过将文件中的任何粗箭头转换为传统的函数声明来解决。

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多