[英]Why doesn't firebase javascript authentication work with ie11?
[英]IE11 doesn't work well with Blob constructor & javascript array
我一直在使用HTML5的Blob來整合包括文件和字符串在內的大量數據。 由於要發送的文件和字符串不是在程序中預先指定的,我需要將所有數據打包到JS文件中並立即發送,所以我使用javascript數據收集可用數據,然后將此數組作為參數Blob構造函數。 它在Chrome和Firefox中運行良好,但在使用IE11時會拋出一個javascript錯誤。
@#$%中第161行第9行的未處理異常.js 0x800a139e - JavaScript運行時錯誤:InvalidStateError
我的代碼如下:
var blobPackage_array = [];
if(userType != null)
blobPackage_array.push(userType);
if(userInfo != null)
blobPackage_array.push(userInfo);
for (var i = 0; i < fileList.length; i++) {
blobPackage_array.push(fileList[i]);
}
var blobPackage = new Blob(blobPackage_array); //throw javascript runtime error
我以前懷疑IE不支持Blob,所以我測試了這個:
var blobPackage = new Blob(["test", fileList[0]]);
它工作正常,沒有錯誤。 我的最后一個猜測是IE不能將blobPackage_array
識別為Blob構造函數的有效參數。 但是Blob沒有附加方法,同時我不知道需要附加多少文件,這意味着我無法一勞永逸地構造Blob。 有沒有遇到過這個? 我能用什么繞過這個? 我很感激任何建議。
更新! 出於某種原因,我不能使用FormData
,它必須是blob ...任何人都可以幫助我嗎?
再次更新! 感謝您的回復,有一些進展。 我檢查過MSDN,Blob的構造函數應該是這樣的: var blobObject = new Blob([new Uint8Array(array)], { type: 'image/png' });
。 我試圖構建Uint8Array
與blobPackage_array
通過此var uint8array = new Uint8Array(blobPackage_array);
。 我發現這個轉換時數據丟失了。 但事實上, var blobPackage = new Blob([uint8array]);
可以正常工作,沒有錯誤。 因此,我只需要修復轉換問題。
我想通了。 我是個白痴。我不認識我原來的blobPackage_array
作為有效參數,因為我附加了這些變量:
if(userType != null)
blobPackage_array.push(userType);
我只需要通過這個驗證userType
:
if(userType != null)
blobPackage_array.push(new String(userType));
所以,不要費心將所有數據轉換為UInt8Array類型......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.