ค้นหาเว็บไซต์

javascript - Firefox ไม่เข้าใจว่าตัวแปรมี ArrayBuffer ในขณะที่ Chrome เข้าใจ


ฉันมีปัญหาในการทำให้ Firefox อ่าน blob หรือแม่นยำกว่านั้นคือเข้าใจว่าตัวแปรหนึ่งมี ArrayBuffer

ฉันกำลังทดลองใช้ WebRTC ใน TypeScript

// Create a data Channel for communication
this.gameChannel = this.RtcConnection.createDataChannel('g', gameDataChannelOptions);
// Start listener
this.gameChannel.onmessage = function (event: any) {
    console.log(event);
}

โค้ดด้านบนทำงานได้ใน Chrome แต่ไม่ทำงานใน Firefox หรือพูดอีกอย่างคือ Firefox ไม่สามารถอ่านข้อมูลที่ได้ (หรือมีความเป็นไปได้มากว่าผมทำผิดบางอย่าง)

ด้านล่างนี้คือคอนโซลใน Chrome และ FF สังเกตว่าใน Chrome ผมเห็นข้อมูลที่คาดหวัง ในขณะที่ใน FF ผมได้แค่บล็อบที่มีความยาวตามที่คาดหวัง แต่ไม่สามารถเข้าถึงมันได้

ฉันจะได้ผลลัพธ์เหมือนกันทั้งสองเบราว์เซอร์ได้อย่างไร?

คำตอบ #1

ตั้งค่า this.gameChannel.binaryType="arraybuffer" เพื่อให้มันทำงานได้

Firefox ถูกต้อง เพราะ "blob" คือชนิดไบนารีค่าเริ่มต้น ความผิดพลาดจากผู้ใช้งาน

Chrome ยังไม่ได้ใช้งาน "blob" ซึ่งน่าจะเป็นเหตุผลว่าทำไมมันถึงดีฟอลต์ไปที่ array buffer ถ้าฉันตั้งค่า "blob" ใน Chrome ฉันจะได้:

Failed to set the 'binaryType' property on 'RTCDataChannel':
Blob support not implemented yet

น่าเสียดายที่สิ่งนี้กำลังทำให้เกิดปัญหาความเข้ากันได้ของเว็บ ตามที่คำถามของคุณแสดงให้เห็น

บทความที่เกี่ยวข้อง