views:

108

answers:

4

I am using the following code to get the version of IE in a system.

    var browser = navigator.appName;
    var b_version = navigator.appVersion;
    var version = parseFloat(b_version);
    alert(version);

But the version always get is 4 in IE^ and IE7. How can I get the exact version?

A: 

Try something like this:

<script language="javascript">
     Event.observe(window, 'load', function() {
      var el = $("browserName");
      var BO = detectBrowser();
      if(BO.ie6){
       el.innerHTML = "<b>We do not support IE6. Please click <a href=\"http://www.microsoft.com/windows/downloads/ie/getitnow.mspx\"&gt;here&lt;/a&gt; to upgrade.</b>";
      }else{
       el.innerHTML = "<b>Thank You for not running IE6.</b>";
      }
     });
</script>
Chirag Patel
Where from the 'Event.observe'?
Sauron
+3  A: 

It's generally not a good idea to use version detection — in fact, even browser detection isn't recommended! Instead, try object detection.

Avi Flax
Its really a good technique. But is there any performance issues??
Sauron
I'm pretty sure there are not. This is, as I understand it, a "best practice".
Avi Flax
And it's certainly faster than anything involving regular expressions, and probably string slicing too.
Avi Flax
Thanks for your reply
Sauron
A: 
var match = navigator.userAgent.match('MSIE (.)');
var version = match && match.length > 1 ? match[1] : 'unknown';
Annie
A: 

You got 4 because of navigator.appVersion strings starts with 4.0 like this.

4.0 (compatible; MSIE 6.0; Windows NT 5.0; ...)

If you do like this, you will get MSIE 6.0 for above case

alert(navigator.appVersion.match(/MSIE [\d.]+/))

If you only want 6.0 you could do like

alert(navigator.appVersion.match(/MSIE ([\d.]+)/)[1])
S.Mark