摆脱IE11中的FormData.entries

问题描述

我需要摆脱或跳过IE11中的FormData.entries()我有从这里检查IE 11的代码https://stackoverflow.com/a/22242528/1824579

        var formData = new FormData();

        ...

        if (!navigator.appVersion.indexOf('Trident/') > -1) { //is 29 in IE; -1 in Chrome
            for (var pair of formData.entries()) { //error in IE11
                ...
            }
        }

所以我要实现的是,如果浏览器是IE11,则应跳过此部分。到目前为止,我还无法实现这一目标。在控制台中,我只会显示错误SCRIPT1004: Expected ';' Index(1094,31),正好在以下行中的单词pair之后:for (var pair of formData.entries()) {

我不知道为什么IE11会如此普及,因为IE11中的日志或navigator.appVersion.indexOf('Trident/')的结果是29

解决方法

IE11不支持

for...of。这是语法级别的问题,特征检测无法解决。最好的选择是将Babel之类的源代码转换为IE11。

,

问题可能出在使用逻辑NOT运算符。检查“ indexOf> -1”应该可以解决问题,或者您可能需要使用一组额外的括号:

if (!(navigator.appVersion.indexOf('Trident/') > -1))