我正在尝试使用ArrayBuffers,Websockets和DataStream.js库编写一些应用程序,但它在相当简单的代码上失败了,而且我没有找到任何关于相同问题的相关页面。
问题在于
var arr = new Uint8Array(6);
alert(arr.BYTES_PER_ELEMENT);
返回undefined。我可以直接使用Uint8Array.BYTES_PER_ELEMENT
(在Opera 1中),但DataStream.js库使用“通用”方式来获取此属性:(DataStream.js:377)
DataStream.memcpy(arr.buffer, 0,
this.buffer, this.byteOffset+this.position,
length*arr.BYTES_PER_ELEMENT);
有没有办法让它保持通用但在Opera 12中工作?像arr.__proto__.BYTES_PER_ELEMENT
这样的东西。
或者我做错了什么?在Chromium中它可以正常工作。
答案 0 :(得分:0)
因此,经过与ivy_lynx的简短讨论后,我决定以这种简单的方式来实现,它设置了应该在原型中设置的值。现在,即使在Opera 12.16中,DataStream.js库也能正常工作
if (Uint8Array.prototype.BYTES_PER_ELEMENT == undefined) {
Uint8Array.prototype.BYTES_PER_ELEMENT = Uint8Array.BYTES_PER_ELEMENT;
Uint8ClampedArray.prototype.BYTES_PER_ELEMENT = Uint8ClampedArray.BYTES_PER_ELEMENT;
Int8Array.prototype.BYTES_PER_ELEMENT = Int8Array.BYTES_PER_ELEMENT;
Uint16Array.prototype.BYTES_PER_ELEMENT = Uint16Array.BYTES_PER_ELEMENT;
Int16Array.prototype.BYTES_PER_ELEMENT = Int16Array.BYTES_PER_ELEMENT;
Uint32Array.prototype.BYTES_PER_ELEMENT = Uint32Array.BYTES_PER_ELEMENT;
Int32Array.prototype.BYTES_PER_ELEMENT = Int32Array.BYTES_PER_ELEMENT;
Float64Array.prototype.BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT;
}