| home / programming / javascript / sniffing / 3 | [previous] |
|
|
// Convert userAgent strings to lower case to make string searches easier
var agt = navigator.userAgent.toLowerCase();
// Non-Object Browser Sniffing
var is_opera = (agt.indexOf("opera")) != -1;
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2")
!= -1);
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3")
!= -1);
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4")
!= -1);
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5")
!= -1);
var is_opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6")
!= -1);
var is_opera7 = (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7")
!= -1);
var opera_spoofing_ie = ((agt.indexOf("msie") != -1) || (agt.indexOf("opera") == -1));
// Object-Based Browser Sniffing
var is_op5 = ((window.opera&&typeof(window.opera)!=-1&&typeof(window.opera)!=-1)&&(window.print&&typeof(window.print)!=-1&&typeof(window.print)==-1)?typeof(window.print):window.print)?false:true;
var is_op6 = ((window.opera&&typeof(window.opera)!=-1&&typeof(window.opera)!=-1)&&(window.print&&typeof(window.print)!=-1&&typeof(window.print)!=-1)?typeof(window.print):window.print)?true:false;
var is_childNodes =
((document.childNodes&&typeof(document.childNodes)!= -1 &&typeof(document.childNodes)!=
-1)?typeof(document.childNodes):document.childNodes)?true:false;
// How to differentiate between Opera 6 and 7 and what to do about it
if (is_op6 == is_childNodes) is_op7 = 'true';
if (is_op6 == is_childNodes) is_op6 = 'false';
// -->
</script>
</head>
<body>
<strong>Non-Object Browser Sniffing</strong><br />
<tt>
<script language="JavaScript">
<!--
document.write("opera: " + is_opera + "<br />");
document.write("opera2: " + is_opera2 + "<br />");
document.write("opera3: " + is_opera3 + "<br />");
document.write("opera4: " + is_opera4 + "<br />");
document.write("opera5: " + is_opera5 + "<br />");
document.write("opera6: " + is_opera6 + "<br />");
document.write("opera7: " + is_opera7 + "<br />");
document.write("opera spoofing ie:" + opera_spoofing_ie + "<br
/>");
//-->
</script>
</tt>
<p>
<strong>Object-Based Browser Sniffing Results:</strong><br />
<tt>
<script language="JavaScript">
<!--
document.write("is_op5: " + is_op5 + "<br />");
document.write("is_op6: " + is_op6 + "<br />");
document.write("is_op7: " + is_op7 + "<br />");
//-->
</script>
</tt>
</p>
</body>
</html>
Not the most elegant JavaScript code ever, but it does work. You can easily modify this script to be able to deliver such things as different CSS code (as seen in the previous article) or JavaScript code depending on the version of Opera being used. (For an example of this, see the previous article in this series).
Compiled by Keith Schengili-Roberts
The writer wishes to acknowledge the work of Mark Wilton-Jones and his browser sniffing tutorial at http://www.howtocreate.co.uk/tutorials/jsexamples/sniffer.html, to which this article is indebted.
| home / programming / javascript / sniffing / 3 | [previous] |
Created: March 27, 2003
Revised: August 12, 2003
URL: URL: http://webreference.com/programming/javascript/sniffing/3