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

Discussion in 'Javascript' started by Aaron Gray, Jul 11, 2008.

  1. Aaron Gray

    Aaron Gray Guest

    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
    Aaron Gray, Jul 11, 2008
    #1
    1. Advertising

  2. * 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: · 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/
    Bjoern Hoehrmann, Jul 11, 2008
    #2
    1. Advertising

  3. Aaron Gray

    Svend Tofte Guest

    Re: The final 'document.getElementById' fix - test on old browserneeded ?

    On Jul 11, 1:21 am, "Aaron Gray" <> 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
    Svend Tofte, Jul 11, 2008
    #3
  4. Re: The final 'document.getElementById' fix - test on old browserneeded ?

    Svend Tofte <> writes:

    > On Jul 11, 1:21 am, "Aaron Gray" <> 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.

    /L
    --
    Lasse Reichstein Nielsen
    DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
    'Faith without judgement merely degrades the spirit divine.'
    Lasse Reichstein Nielsen, Jul 11, 2008
    #4
  5. Aaron Gray

    Aaron Gray Guest

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

    "Lasse Reichstein Nielsen" <> wrote in message
    news:...
    > Svend Tofte <> writes:
    >
    >> On Jul 11, 1:21 am, "Aaron Gray" <> 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, Jul 11, 2008
    #5
  6. Aaron Gray

    Aaron Gray Guest

    "Bjoern Hoehrmann" <> wrote in message
    news:...
    >* 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, Jul 11, 2008
    #6
  7. Aaron Gray

    Aaron Gray Guest

    Re: The final 'document.getElementById' fix - HTML test file

    "Aaron Gray" <> wrote in message
    news:...
    > 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
    Aaron Gray, Jul 11, 2008
    #7
  8. In comp.lang.javascript message <>,
    Fri, 11 Jul 2008 00:21:35, Aaron Gray <> 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.
    Dr J R Stockton, Jul 11, 2008
    #8
  9. Aaron Gray

    SAM Guest

    SAM, Jul 11, 2008
    #9
  10. Aaron Gray

    dhtml Guest

    Re: The final 'document.getElementById' fix - test on old browserneeded ?

    On Jul 11, 8:20 am, Lasse Reichstein Nielsen <> wrote:
    > Svend Tofte <> writes:
    > > On Jul 11, 1:21 am, "Aaron Gray" <> 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
    dhtml, Jul 12, 2008
    #10
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Xah Lee
    Replies:
    22
    Views:
    1,111
    Tim Roberts
    Mar 21, 2006
  2. Xah Lee
    Replies:
    23
    Views:
    1,049
    Tim Roberts
    Mar 21, 2006
  3. Xah Lee
    Replies:
    21
    Views:
    770
    Tim Roberts
    Mar 21, 2006
  4. wk
    Replies:
    5
    Views:
    162
    Dietmar Meier
    Apr 22, 2005
  5. Martin
    Replies:
    3
    Views:
    137
Loading...

Share This Page