2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

IE瀏覽器因不支持includes不支持七牛JavaScript SDK云解決方案

2022-05-19 17:20 欄目:技術(shù)開發(fā) 查看(6780)

在幾個月前我們在微構(gòu)網(wǎng)絡(luò)官網(wǎng)上面發(fā)布過一篇名為《基于七牛云JavaScript SDK一行代碼實現(xiàn)大文件分片斷點續(xù)傳》的文章,這篇文章在網(wǎng)上應(yīng)該至少被數(shù)百人次查閱過,也接到好幾個人進(jìn)一步的問題咨詢。其中有一個問題是一個共性問題,都認(rèn)為這里面的代碼有問題,在IE瀏覽器上面執(zhí)行不了。我們一般寫博客文章分享的時候,都是僅提供核心代碼,而不是完整的項目代碼;主要是兩個原因:1、在一篇短文中貼出所有代碼,不能突出核心問題所在;2、我們是比較反感完完全全的伸手黨的。

如果僅僅按照文章中的核心代碼,直接去跑demo,那么在ie瀏覽器下確實會出現(xiàn)上傳無效,打開控制臺就可以看到報錯信息。

QQ截圖20220519165238

原因在于在七牛云JavaScript SDK qiniu.min.js中使用了includes()方法,這個方法用于判斷字符串是否包含指定的子字符串, 如果找到匹配的字符串則返回 true,否則返回 false。瀏覽器的支持情況如下:

QQ截圖20220519170817

很顯然在IE瀏覽器上默認(rèn)是不被支持的,那么應(yīng)該怎么辦呢?

解決辦法一:使用其他方法屬性代替includes()

這種方法適合自己手寫的局部代碼,如果是使用SDK等現(xiàn)成的,我們不太建議修改其核心源代碼。

解決方法二:使得IE瀏覽器支持includes,也就是另外些一個這個方法

以下自己構(gòu)建includes方法的代碼參考網(wǎng)絡(luò)其他資料而來,其他IE不支持的方法也可以參考如下代碼實現(xiàn)。

if (!Array.prototype.includes) {
  Object.defineProperty(Array.prototype, "includes", {
     value: function(valueToFind, fromIndex) {
        if (this == null) {
            throw new TypeError('"this" is null or not defined');
        }
        var o = Object(this);
        var len = o.length >>> 0;
        if (len === 0) {
           return false
        }
        var n = fromIndex | 0;
        var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
        function sameValueZero(x, y) {
           return (x === y || (typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y)))
        }
        while (k < len) {
          if (sameValueZero(o[k], valueToFind)) {
             return true
          }
          k++
        }
        return false
     }
  })
}

當(dāng)然,這種方法也適用于其他js庫使用了includes()方法的場景,也是一樣的道理,就是自己“外掛”構(gòu)造實現(xiàn)includes的方法。

這也說明,我們在選擇技術(shù)實現(xiàn)方案的時候,一定要根據(jù)我們開發(fā)項目的實際場景選擇。而不是一味地追求技術(shù)的新穎,而不管三七二十一一頓亂上,這樣或許會留下填不完的坑。

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:IE瀏覽器因不支持includes不支持七牛JavaScript SDK云解決方案 - 微構(gòu)網(wǎng)絡(luò)
分享:
息烽县| 惠水县| 嵊泗县| 肥西县| 灵山县| 德化县| 通山县| 安乡县| 通海县| 苏尼特左旗| 镇宁| 子洲县| 东阳市| 深泽县| 克拉玛依市| 平顺县| 镶黄旗| 奎屯市| 南和县| 凌源市| 鹰潭市| 厦门市| 汝州市| 济宁市| 大名县| 乌拉特中旗| 佛山市| 始兴县| 忻城县| 饶平县| 宝鸡市| 昂仁县| 临海市| 唐山市| 阿拉善右旗| 磐安县| 白沙| 寿宁县| 云林县| 资兴市| 盐城市|