我习惯使用Atlas.最近我开始转换到jQuery,有时甚至是原型.我目前正在研究的项目是使用原型.
在Prototype中,有一种简单的方法来获取浏览器名称和版本吗?我查看了API文档,似乎无法找到它.
作为nertzy答案的完成,您可以使用以下功能添加检测IE版本的功能:
Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 6; Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) == 7; Prototype.Browser.IE8 = Prototype.Browser.IE && !Prototype.Browser.IE6 && !Prototype.Browser.IE7;
另一方面,您还必须在服务器端检测用户代理详细信息.无论如何,浏览器检测是编写跨浏览器脚本的严重缺陷策略,只有在浏览器功能检测失败时才能使用.用户很容易改变他/她的用户代理详细信息.
Prototype提供了一些标记,您可以检查以了解哪个浏览器正在运行.请记住,检查您希望使用的功能而不是检查特定浏览器是更好的做法.
以下是prototype.js
源树中当前的浏览器和功能检测部分:
var Prototype = { Browser: { IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1), Opera: navigator.userAgent.indexOf('Opera') > -1, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div')['__proto__'] && document.createElement('div')['__proto__'] !== document.createElement('form')['__proto__'] }, }
因此,您可以通过调查当前浏览器是否为IE来检查其值Prototype.Browser.IE
,或者更具有未来兼容性,并检查特定功能,如XPath Prototype.BrowserFeatures.XPath
.