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 Lead
Thomson Reuters (Markets) LLC
US-NY-New York

Justtechjobs.com Post A Job | Post A Resume
Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?


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.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

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

webref The latest from WebReference.com Browse >
Rolling Out Your Own HTML Application Version Control · HTML 5: Client-side Storage · Working with Ajax Server Extensions
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Wi-Fi Product Watch, November 2009 · Chip Market Recovering From '08 Collapse · Low-Cost Tools to Kickstart Your New Business

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

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