以下是关于浏览器兼容的一段JS脚本
<script type="text/javascript">
        var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        if (window.ActiveXObject)
            Sys.ie = ua.match(/msie ([\d.]+)/)[1]
        else if (document.getBoxObjectFor)
            Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]
        else if (window.MessageEvent && !document.getBoxObjectFor)
            Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]
        else if (window.opera)
            Sys.opera = ua.match(/opera.([\d.]+)/)[1]
        else if (window.openDatabase)
            Sys.safari = ua.match(/version\/([\d.]+)/)[1];
        
        //以下进行测试
        if(Sys.ie) document.write('IE: '+Sys.ie);
        if(Sys.firefox) document.write('Firefox: '+Sys.firefox);
        if(Sys.chrome) document.write('Chrome: '+Sys.chrome);
        if(Sys.opera) document.write('Opera: '+Sys.opera);
        if(Sys.safari) document.write('Safari: '+Sys.safari);    </script>
在IE下运行是正常的,但是在firefox3.6.3版本下运行就会报错,错误就是出在 
Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1] is null
 请高人帮忙解决一下,比较急,先谢谢了

解决方案 »

  1.   

    没有匹配到就返回null,访问null的属性则异常  var Sys = {};
      var ua = navigator.userAgent.toLowerCase();
      Sys.chrome = !!ua.match(/chrome\/([\d.]+)/);
      

  2.   

      else if (document.getBoxObjectFor)
      Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]
      else if (window.MessageEvent && !document.getBoxObjectFor)
      Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]首先 在ff下 document.getBoxObjectFor是false的
    所以下面一行成立。
    但是明显ua是不含chrome的。所以提示is null.
      

  3.   

     var Sys = {};  
        var ua = navigator.userAgent.toLowerCase();  
        var s;  
        (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :  
        (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :  
        (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :  
        (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :  
        (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;  
      
        //以下进行测试  
        if (Sys.ie) document.write('IE: ' + Sys.ie);  
        if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);  
        if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);  
        if (Sys.opera) document.write('Opera: ' + Sys.opera);  
        if (Sys.safari) document.write('Safari: ' + Sys.safari);  try下
      

  4.   

    var Sys = {};  
        var ua = navigator.userAgent.toLowerCase();  
        var s;  
        (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :  
        (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :  
        (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :  
        (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :  
        (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;  
      
        //以下进行测试  
        if (Sys.ie) document.write('IE: ' + Sys.ie);  
        if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);  
        if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);  
        if (Sys.opera) document.write('Opera: ' + Sys.opera);  
        if (Sys.safari) document.write('Safari: ' + Sys.safari);  
     
    这段跟我写的是一个意思啊