spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / programming / javascript / sniffing / 3 To page 1current page
[previous]

Object Sniffing New Browsers, Part 3: Opera

Technical Editor
Aquent
US-WA-Redmond

Justtechjobs.com Post A Job | Post A Resume
Developer News
Cisco Lawsuit: A Test for the GPL?
Shifts for Enterprise Linux, Green Networks in '09
Gifts for All in Linux 2.6.28

Putting it All Together, Again

The following code puts all of these methods together, providing you with a reliable way of distinguishing whether or not Opera is being used, and if so, which version:
<html>
<head>
<title>Sniffing for Opera</title>
<script language="JavaScript">
<!-- //

// 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 To page 1current page
[previous]

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

webref The latest from WebReference.com Browse >
An Introduction to 3D · Email Marketing Terms to Know · Search Engines 101: Paid Vs. Natural Search
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Mastering SSH: Connecting, Executing Remote Commands and Using Authorized Keys · Connecticut Town Lays Groundwork for Merged School, Municipal VoIP Network · Wi-Fi for your Car, Truck, or MPV

Created: March 27, 2003
Revised: August 12, 2003

URL: URL: http://webreference.com/programming/javascript/sniffing/3