我正在尝试使用 Javascript 来检测网络浏览器是否支持 websockets,但是仅使用基于特征的检测,我得到了误报,所以我添加了一个用户代理测试来代替 Android 设备,我不高兴了。我有一个 Samsung Galaxy Tab 2,这是我的检测代码:
var isSupported = (("WebSocket" in window && window.WebSocket != undefined) ||
("MozWebSocket" in window));
/* This line exists because my Galaxy Tab 2 would otherwise appear to have support. */
if (isSupported && navigator.userAgent.indexOf("Android") > 0)
isSupported = false;
if (isSupported)
document.write("Your browser supports websockets");
else
document.write("Your browser does not support websockets");
此代码似乎适用于 IE、Firefox、Safari(包括 iPhone/iPad)和 Chrome。但是,当我使用 Samsung Galaxy Tab 2 的默认浏览器时,基于功能的检查返回 true,这是不正确的,因为该浏览器实际上并不支持 websockets。此外,我不知道有多少其他 Android 设备有同样的问题,所以目前,这是我所知道的用于检测的最佳解决方案。
有没有比我现在做的更好的方法来检测 websocket 支持?我确实意识到 Android 存在解决方法,例如使用不同的浏览器,这意味着我的用户代理检测代码按原样并不是一件好事。我的目标是首先不必依赖用户代理。
有什么建议吗?
最佳答案
这是最短的解决方案,由 Modernizr 使用。只需将其添加到您的代码中
supportsWebSockets = 'WebSocket' in window || 'MozWebSocket' in window;
然后就可以运行了
if (supportsWebSockets) {
// run web socket code
}
关于javascript - 使用 Javascript 检测 websocket 支持的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20060320/