Connecting Tech Pros Worldwide Help | Site Map

Browser Bugs, Quirks and Inconsistencies

  #1  
Old August 18th, 2007, 03:00 PM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521
Don't you just hate it when you've got something working in every browser (that you've tested on) except the XYZ browser?

It would be a good idea to document some strange or incorrect behaviours of particular browsers with possible solutions and workarounds.

These will be documented in the following format:
Problem
Give a brief description of the problem

Browser
Which browser it affects (include version number if applicable)

Example
A simple example which demonstrates the problem

Solution
A possible solution or workaround which should not affect other browsers.

Alternative Solution (if applicable)
Another possible solution (if one exists).

Table of contents

Here's one to start us off:
-----------------------------------------------------------------------------------------------------
Problem
The select object's value property doesn't give the selected value

Browser
Internet Explorer

Example
The select drop down:
[HTML]<select name="test" id="test">
<option>1
<option>2
</select>[/HTML]
The Javascript code:
Expand|Select|Wrap|Line Numbers
  1. var selObj = document.getElementById("test");
  2. var val = selObj.value;
Solution
Give values to the option elements:
[HTML]<select name="test" id="test">
<option value="1">1
<option value="2">2
</select>[/HTML]
Alternative Solution
Change the Javascript to:
Expand|Select|Wrap|Line Numbers
  1. var selObj = document.getElementById("test");
  2. var val = selObj.options[selObj.selectedIndex].text;



  #2  
Old September 2nd, 2007, 08:49 PM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


The table row not getting added to the table in IE is a common problem. Well, here's the answer: add it to the tbody instead. Who would've thought IE would be so rigid?
  #3  
Old September 3rd, 2007, 08:38 AM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


Two more bugs for IE's buggy (i.e. non-standard) implementation of the select element's add() method.
  #4  
Old September 5th, 2007, 12:35 PM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


IE doesn't respect "checked" property when dynamically adding checkboxes. Added to the list.
  #5  
Old November 1st, 2007, 12:51 PM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


Opera has a quirk relating to onload and onunload which may catch some people out. It's useful to know in case you have some functionality which is triggered by one of these two events. Oh yes, and two more IE bugs with many more to follow I'm sure.
  #6  
Old November 15th, 2007, 05:49 PM
Newbie
 
Join Date: Oct 2007
Location: Venezuela
Posts: 5

re: Browser Bugs, Quirks and Inconsistencies


Problem
Not possible to prototype the Object() object
Browser
Internet Explorer
Example
The Javascript code:
Expand|Select|Wrap|Line Numbers
  1. //create an Alias (via protoype) for getElementById, or getElementByTagName
  2. Object.prototype.byTag=Object.prototype.getElementsByTagName;
  3. t=document.byTag('input');
Some relevant HTML:
Expand|Select|Wrap|Line Numbers
  1. <input id="anyName1" type="text" ...>
  2. <input id="anyName2" type="text" ...>
Solution
Create a simple function, and use the object as parameter (not nice!)... :
Expand|Select|Wrap|Line Numbers
  1. function byTag(o,s) {
  2.   return o.getElementsByTagName(s)
  3. }
  4. t=byTag(document,'input');
  #7  
Old December 6th, 2007, 08:38 AM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


Quote:
Originally Posted by cheogt
Problem
Not possible to prototype the Object() object
Yes, but is it such a good idea? See Object.prototype is verboten (I don't know where the fascination with German words started!)
  #8  
Old May 14th, 2008, 07:56 AM
hsriat's Avatar
Expert
 
Join Date: Jan 2008
Location: Bath, UK
Posts: 1,609

re: Browser Bugs, Quirks and Inconsistencies


Problem
Not able to use innerHTML for a dynamically created row.

Browser
Internet Explorer

Example
Expand|Select|Wrap|Line Numbers
  1. var rowX = tableObject.insertRow(tableObject.rows.length);
  2. rowX.innerHTML = '<td id="td01" class="cells" onclick="doSomething()">This is the cell</td>';
Solution
Use insertCell()
Expand|Select|Wrap|Line Numbers
  1. var rowX = tableObject.insertRow(tableObject.rows.length);
  2. var cellX = rowX.insertCell(0);
  3. cellX.id = "td01";
  4. cellX.className = 'cells';
  5. cellX.onclick = function () {
  6.     doSomething()
  7. }
  8. cellX.innerHTML = 'This is the cell';
  #9  
Old May 17th, 2008, 07:26 PM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


Quote:
Originally Posted by hsriat
Problem
Not able to use innerHTML for a dynamically created row.
Spot on. However, if you're going to use insertRow(), most likely you'd use insertCell too. Good to know all the same. Thanks.
  #10  
Old June 8th, 2008, 01:12 PM
acoder's Avatar
Site Moderator
 
Join Date: Nov 2006
Location: UK
Posts: 14,521

re: Browser Bugs, Quirks and Inconsistencies


Split out each one into their own page. Easier to read and link to.
Reply


Similar Threads
Thread Thread Starter Forum Replies Last Post
Browser Quirk: Dynamically appended table does not appear on page (IE) acoder insights 0 August 18th, 2007 03:00 PM
Browser Quirk: onload/onunload do not fire on back/forward/refresh (Opera) acoder insights 0 August 18th, 2007 03:00 PM
Browser Bug: Select dropdown element's add() method doesn't work as expected (IE) acoder insights 0 August 18th, 2007 03:00 PM
Browser Quirk: Dynamically appended checked checkbox does not appear checked (IE) acoder insights 0 August 18th, 2007 03:00 PM