spacer

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

home / experts / javascript / pharmacy / article1


Cross-Browser Scripting

Developer News
News Flash: Adobe Has iPhone Workaround
Adobe's Flash 10.1 Goes Mobile (Minus iPhone)
A Salute to Visionary CEOs

Netscape Navigator 4.0x and Internet Explorer 4.0x have much in common, but they also introduce many basic differences. For example, let's discuss a simple element named test, with an absolute position:

<DIV ID="test" STYLE="position: abolute; left: 100; top: 200;">

Since we're only interested in various ways of cross-browser scripting, we'll use a very simple script -- a function that moves this element a given number of pixels in each direction. If you've read the columns at Doc JavaScript, you probably noticed the use of the trinary ?: operator to create cross browser references:

function moveIt(id, x, y) {
  var whichEl = (NS4) ? document[id] : document.all[id].style;
  whichEl.left += x;
  whichEl.top += y;
}

As you can see, the function first assigns a reference of the desired object to a local variable named whichEl. The expression document[id] references the element in Navigator 4.0x, while document.all[id], or eval(id), is how we reference it in Internet Explorer 4.0x. However, we need to access the element's left and top properties in order to move it. In Navigator 4.0x, the element itself is the parent of these properties, but in Internet Explorer 4.0x they are actually properties of the element's style property.

By assigning a browser-dependant reference to the whichEl variable, we create a cross-browser object. In other words, we can refer to its properties in both browsers with the use of a single statement:

whichEl.left += x;
whichEl.top += y;

If you haven't followed our previous columns, you may not know how we created the NS4 variable. Here's the code for our two standard browser-detection variables:

var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;

NS4 is true if the browser supports the document.layers object. In other words, it is true for Navigator 4.0x. The second variable, IE4, is true if the browser supports the document.all object. That is, it is true for Internet Explorer 4.0x. Note that 1 and 0 are equivalent to true and false. We use them because they are shorter.

Before we continue, let's take a look at another version of our moveIt() function:

function moveIt(id, x, y) {
  if (NS4) {
    document[id].left += x;
    document[id].top += y;
  } else {
    document.all[id].style.left += x;
    document.all[id].style.top += y;
  }
}

This function actually splits the work between two sets of statements. The first part of the function moves the element if the browser is Navigator 4.0x, while the second one handles the situation for Internet Explorer 4.0x.

Now that we've covered the well-known basics, it's time to reveal several other techniques. Just keep reading.

http://www.internet.com

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

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

webref The latest from WebReference.com Browse >
Building a Banking Application Home Page with OOP · Mixing Scripting Languages · Review: phpFox, a Social Networking CMS with all the Bells and Whistles
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Enterprise 2.0: Social Networking in the Cloud · BroadSoft Marketplace Hastens Pace of Telephony Innovation · Review: HTC Hero for Sprint

Created: June 4, 1997
Revised: June 4, 1997
URL: http://www.webreference.com/js/pharmacy/article2/