Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

The final 'document.getElementById' fix - test on old browser needed ?

4 views
Skip to first unread message

Aaron Gray

unread,
Jul 10, 2008, 7:21:35 PM7/10/08
to
Hi,

I know the 'document.getElementById()' issue is really over since every
browser since 1998 supports the W3C DOM standard, but I could not resist
this offering :-

if (!document.getElementById)
document.getElementById = function(id) { return document.all[id]; }

This should then provide a getElementById function if one does not already
exist.

Is anyone in a position to be able to test this code ?

You could go thurther and define :-

if (!document.getElementById)
if (document.all)
document.getElementById = function(id) { return
document.all[id]; }
else
document.getElementById = function(id) { return
document.layers[id]; }

Reference :-

http://www.jibbering.com/faq/faq_notes/not_browser_detect.html

Thanks,

Aaron


Bjoern Hoehrmann

unread,
Jul 10, 2008, 10:54:16 PM7/10/08
to
* Aaron Gray wrote in comp.lang.javascript:

>I know the 'document.getElementById()' issue is really over since every
>browser since 1998 supports the W3C DOM standard, but I could not resist
>this offering :-
>
> if (!document.getElementById)
> document.getElementById = function(id) { return document.all[id]; }
>
>This should then provide a getElementById function if one does not already
>exist.
>
>Is anyone in a position to be able to test this code ?

There's http://browsers.evolt.org and there are a number of free virtual
machine http://en.wikipedia.org/wiki/Category:Virtualization_software
products that you can use to set up old operating systems or just iso-
lated enviroments to run them.
--
Björn Höhrmann · mailto:bjo...@hoehrmann.de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/

Svend Tofte

unread,
Jul 11, 2008, 8:28:55 AM7/11/08
to
On Jul 11, 1:21 am, "Aaron Gray" <ang.use...@gmail.com> wrote:

> document.getElementById = function(id) { return document.layers[id]; }

NS4 Layers are more tricky then that. Layers that are nested will not
be exposed through the top level layers array. Example

document.layers['outerLayer'].document.layers['innerLayer'] (yes, it's
that messed up)

Regards,
Svend

Lasse Reichstein Nielsen

unread,
Jul 11, 2008, 11:20:31 AM7/11/08
to
Svend Tofte <sto...@gmail.com> writes:

Also, layers is not the only collection worth checking. I would also
check document.images, document.links, etc., for each of the nested
documents, in order to better simulate document.getElementById.

Well, to be honest, I'd prefer to just drop support for Netscape 4.

/L
--
Lasse Reichstein Nielsen
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Aaron Gray

unread,
Jul 11, 2008, 11:54:04 AM7/11/08
to
"Lasse Reichstein Nielsen" <l...@hotpop.com> wrote in message
news:ej60ph...@hotpop.com...

> Svend Tofte <sto...@gmail.com> writes:
>
>> On Jul 11, 1:21 am, "Aaron Gray" <ang.use...@gmail.com> wrote:
>>
>>> document.getElementById = function(id) { return document.layers[id]; }
>>
>> NS4 Layers are more tricky then that. Layers that are nested will not
>> be exposed through the top level layers array. Example
>>
>> document.layers['outerLayer'].document.layers['innerLayer'] (yes, it's
>> that messed up)
>
> Also, layers is not the only collection worth checking. I would also
> check document.images, document.links, etc., for each of the nested
> documents, in order to better simulate document.getElementById.
>
> Well, to be honest, I'd prefer to just drop support for Netscape 4.

Right :)

Thanks,

Aaron


Aaron Gray

unread,
Jul 11, 2008, 2:56:34 PM7/11/08
to
"Bjoern Hoehrmann" <bjo...@hoehrmann.de> wrote in message
news:1uhd74hs1p27n8vee...@hive.bjoern.hoehrmann.de...

>* Aaron Gray wrote in comp.lang.javascript:
>>Is anyone in a position to be able to test this code ?
>
> There's http://browsers.evolt.org and there are a number of free virtual
> machine http://en.wikipedia.org/wiki/Category:Virtualization_software
> products that you can use to set up old operating systems or just iso-
> lated enviroments to run them.

I may well try this if no one comes forward to do tests for me.

Thanks,

Aaron


Aaron Gray

unread,
Jul 11, 2008, 2:58:13 PM7/11/08
to
"Aaron Gray" <ang.u...@gmail.com> wrote in message
news:6dnjs1F...@mid.individual.net...

> Hi,
>
> I know the 'document.getElementById()' issue is really over since every
> browser since 1998 supports the W3C DOM standard, but I could not resist
> this offering :-
>
> if (!document.getElementById)
> document.getElementById = function(id) { return document.all[id]; }
>
> This should then provide a getElementById function if one does not already
> exist.
>
> Is anyone in a position to be able to test this code ?
>

There's a test for document.getElementById() emulation here :-

http://www.aarongray.org/Test/JavaScript/document.getElementById-test.html

Thanks,

Aaron


Dr J R Stockton

unread,
Jul 11, 2008, 3:20:10 PM7/11/08
to
In comp.lang.javascript message <6dnjs1F...@mid.individual.net>,
Fri, 11 Jul 2008 00:21:35, Aaron Gray <ang.u...@gmail.com> posted:

>
>I know the 'document.getElementById()' issue is really over since every
>browser since 1998 supports the W3C DOM standard, but I could not resist
>this offering :-
>
> if (!document.getElementById)
> document.getElementById = function(id) { return document.all[id]; }
>
>This should then provide a getElementById function if one does not already
>exist.
>
>Is anyone in a position to be able to test this code ?

A version tested in MS IE 4 is at <URL:http://www.merlyn.demon.co.uk/js-
versn.htm#SSF>; I cannot repeat the test.

I don't recall anyone complaining that it did not work in the
circumstances in which I used it. But it does not reproduce all
features.

To get it rested in Netscape 4, I suggest that you ask the custodian of
the Davar site, who posts advertisements here from time to time.
Evidently he is keen to support those hoping to upgrade to Netscape 4.8.

It's a good idea to read the newsgroup c.l.j and its FAQ. See below.

--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk IE7 FF2 Op9 Sf3
news:comp.lang.javascript FAQ <URL:http://www.jibbering.com/faq/index.html>.
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.

SAM

unread,
Jul 11, 2008, 6:52:36 PM7/11/08
to
Aaron Gray a écrit :

>
> There's a test for document.getElementById() emulation here :-
>
> http://www.aarongray.org/Test/JavaScript/document.getElementById-test.html

a pure soup of tags ... !

--
sm

dhtml

unread,
Jul 11, 2008, 7:25:29 PM7/11/08
to
On Jul 11, 8:20 am, Lasse Reichstein Nielsen <l...@hotpop.com> wrote:
> Svend Tofte <sto...@gmail.com> writes:
> > On Jul 11, 1:21 am, "Aaron Gray" <ang.use...@gmail.com> wrote:
>
> >> document.getElementById = function(id) { return document.layers[id]; }
>
> > NS4 Layers are more tricky then that. Layers that are nested will not
> > be exposed through the top level layers array. Example
>
> > document.layers['outerLayer'].document.layers['innerLayer'] (yes, it's
> > that messed up)
>

For that, you'd need either DFS or BFS. DFS is probably going to be
more efficient in JS. Just keep growing the array.

> Also, layers is not the only collection worth checking. I would also
> check document.images, document.links, etc., for each of the nested
> documents, in order to better simulate document.getElementById.
>
> Well, to be honest, I'd prefer to just drop support for Netscape 4.
>

And even with an traversal that accounted for all of that, the result
would still be slow and would miss elements in NS4 (document.body, for
example).

It seems like a lot of bloat just for NS4 support.

The MSIE id/name bug seems to be a bigger concern:
http://www.gtalbot.org/BrowserBugsSection/MSIE8Bugs/#bug11

> /L

0 new messages