当前位置:  开发笔记 > 编程语言 > 正文

原型库中的浏览器和版本?

如何解决《原型库中的浏览器和版本?》经验,为你挑选了2个好方法。

我习惯使用Atlas.最近我开始转换到jQuery,有时甚至是原型.我目前正在研究的项目是使用原型.

在Prototype中,有一种简单的方法来获取浏览器名称和版本吗?我查看了API文档,似乎无法找到它.



1> sepehr..:

作为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;

另一方面,您还必须在服务器端检测用户代理详细信息.无论如何,浏览器检测是编写跨浏览器脚本的严重缺陷策略,只有在浏览器功能检测失败时才能使用.用户很容易改变他/她的用户代理详细信息.



2> Grant Hutchi..:

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.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有