基于浏览器运行不同的JavaScript
running different JavaScript based on browser
画布清理在不同的浏览器上获得了截然不同的性能。看见http://jsperf.com/canvas-clearing2。
我需要清除每一帧的画布,我的操作方式对移动safari与桌面safari的性能有着巨大的影响。桌面Safari喜欢canvas.width=width,但移动Safari更喜欢canvas.drawRect().
有没有一种方法可以检测什么浏览器是基于它运行不同JavaScript的浏览器?我更喜欢通过JavaScript而不是服务器端来实现这一点。
此外,我发现jQuery的$.浏览器没有帮助,因为它无法区分移动safari和桌面safari。navigator对象也有类似的问题。
针对特定浏览器总是有点问题。虽然确实有一些方法可以做到这一点,但这并不是一种特别可维护的方法,因为每个浏览器都有很多不同的浏览器和版本,这些浏览器会随着时间的推移而变化,因此哪些浏览器是通过哪些代码可以一直变化来优化的。这就造成了维护方面的麻烦。例如,iPod Touch上的移动Safari与每一代iPhone或iPad上的移动Safari具有非常不同的性能特征。
所以。。。与其试图检测浏览器的类型,不如进行特征检测或性能检测,并根据任何给定浏览器的反应进行动态调整。如果做得好,这可以同样适用于所有浏览器,即使是你从未见过或尚未发布的浏览器。
在您的情况下,您可以设计一个快速性能测试,测试两种方法中每种方法的性能。如果这两种方法之间真的有很大的性能差异,那么你可能会在几百毫秒内分辨出差异,在本地浏览器上设置一个cookie,指示最有效的方法,然后从那时起在该浏览器中使用首选方法。如果你想,你可以让cookie每隔几个月过期一次(这样它就会每隔一段时间重新测试一次),或者你也可以把确切的浏览器版本放进cookie中,然后重新运行测试,如果浏览器版本每次都发生变化,就设置一个新的cookie(软件升级)。
通过这种方式,您的代码将始终在所有浏览器中使用最快版本的代码,无论是现在还是永远,您都不必维护/测试无数的浏览器来知道每个浏览器应该使用哪一个。
如果您正在寻找更持久、更可靠的解决方案,我支持jfriend00。然而,您仍然可以使用Javascript中的某些函数获取相当多的信息,并利用这些信息为您带来优势。
看看这个:
http://notnotmobile.appspot.com/
其他资源
导航器对象:http://www.w3schools.com/js/js_browser.asp
浏览器检测:http://www.quirksmode.org/js/detect.html
- Javascript运行php文件,然后下载文件
- JavaScript运行时是如何工作的
- Javascript运行Total保持添加
- JavaScript运行时事件循环现有技术
- 当出现javascript运行时错误时会发生什么
- 使用JavaScript运行脚本
- 在gwt HTMLPanel中使用JavaScript运行Google图表
- 在从HTML表单提交时从javascript运行php
- JavaScript运行时错误:完成此操作所需的数据尚不可用
- RoR最快的javascript运行时
- Windows 8应用程序正在运行,现在得到0x800a1391-JavaScript运行时错误:'WinJS&
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- JavaScript运行后,页面在右侧被切断
- JavaScript 运行时错误仅在本地计算机上
- JavaScript 引擎和 JavaScript 运行时环境有什么区别
- 如何从javascript运行java代码
- Javascript 运行时错误:“应用程序未定义”
- 从Javascript运行PHP文件来检查在线用户:表示未登录的用户是
- JavaScript运行时错误,未定义jQuery
- MVC4和日期选择器:“;0x800a01b6-JavaScript运行时错误:对象没有't支持属性或方法