In my original post, Using 
the innerText Property in Firefox, I wrote my example using 
document.all to determine when to use innerText or 
textContent.
Because the main purpose of that post was to explain to the reader that 
Firefox does not support the innerText property but the textContent property, I 
failed to consider other browsers… yes, shame on me! (thanks Paul for bringing 
this to my attention).
You see, there are browsers that although don’t support document.all, they DO 
support the innerText property: Safari and Konqueror.
So, it is more efficient to check if the innerText property is supported by 
the user agent (thanks, Matthias). The way I do it is like this:
var hasInnerText =
(document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;
var elem = document.getElementById('id');
var elem2 = document.getElementById ('id2');
if(!hasInnerText){
    elem.textContent = value;
    elem2.textContent = value;
} else{
    elem.innerText = value;
    elem2.innerText = value;
}
 | 
Why am I using 
document.getElementsByTagName("body")[0]? Well, 
because, as you know, 
document.getElementsByTagName returns an 
array of elements with that tag name, and since there’s only ONE body tag, I’m 
calling the first and only index of that array at once. This is so, as you can 
see in the example above, if you have more than one element that you need to 
assign a value to.