如何检测浏览器是否支持SharedArrayBuffer?
浏览器端检测
直接通过判断全局构造函数是否存在、且可正常实例化完成检测,比UA匹配准确率更高、实现更简单,示例代码如下:
function checkSharedArrayBufferSupport() { // 优先判断全局是否暴露该构造函数 if (typeof SharedArrayBuffer === 'undefined') { return false } // 兼容特殊环境下构造函数存在但无法正常实例化的异常场景 try { const testBuffer = new SharedArrayBuffer(4) return testBuffer.byteLength === 4 } catch (err) { return false } }
直接调用上述函数即可得到布尔值的检测结果,true代表支持,false代表不支持。
如果符合版本要求的浏览器检测结果为false,需要确认站点是否已经配置了跨域隔离响应头:
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp
只有正确配置上述头信息后,浏览器才会将SharedArrayBuffer暴露到全局作用域。
Node.js端检测
检测逻辑和浏览器端基本一致,示例代码如下:
function checkNodeSABSupport() { if (typeof SharedArrayBuffer === 'undefined') return false try { return new SharedArrayBuffer(8) instanceof SharedArrayBuffer } catch { return false } }
内容的提问来源于stack exchange,提问作者Fnr
相关产品推荐
相关产品推荐

