Executing code before page load complete...

Discussion in 'Javascript' started by Mark Anderson, Oct 23, 2003.

  1. Problem in short: user is moving (clicking a link) from my page before some
    JS code is run (to write a cookie).

    The code does not run (in Body's onLoad event) until the page loads as there
    are a number of images which can take a while to load on a slow connection.
    Using fewer/different graphics is not an option!

    The code writing a cookie the is called in the Body's onLoad event:

    <body onLoad="setLast();">

    The code setting up the cookie is in a function in the Head section

    function setLast() {
    var myPage = location.href;
    //remove old value
    deleteCookie('lastPage');
    var expDate = new Date();
    expDate.setTime( expDate.getTime() + ( myDuration * 60 * 60 * 1000 ) );
    setCookie('lastPage', myPage,expDate,cookiePath);
    }
    ....and it calls setCookie utility code in an external JS file also called in
    the Head section:

    <script src="../support/settings.js" language="JavaScript"
    type="text/JavaScript"></script>

    If I take the cookie setting code out of it's function wrapper but still in
    the Head's <script> section will it execute as soon as it can? Or, would it
    be wiser to put it inline in the Body's content in a <script> tag?
    Presumably the Body onLoad checks for the external JS as well as the images,
    whereas run-on-load might cause the code to execute before the external JS
    was available and cause the code to fail?

    I'd welcome knowledge from those who understand this rather than just reply
    on some local testing and doubtless create a whole different problem

    Regards

    Mark
    Mark Anderson, Oct 23, 2003
    #1
    1. Advertising

  2. "Mark Anderson" <> writes:

    > If I take the cookie setting code out of it's function wrapper but still in
    > the Head's <script> section will it execute as soon as it can?


    It should. As soon as it can is after all previous scripts have been
    executed.

    > Or, would it be wiser to put it inline in the Body's content in a
    > <script> tag? Presumably the Body onLoad checks for the external JS
    > as well as the images, whereas run-on-load might cause the code to
    > execute before the external JS was available and cause the code to
    > fail?


    It shouldn't.

    If you have more than one script tag, it won't execute the second before
    the first have loaded. The second could depend on functions from the first,
    and the first could contain document.write's that completely change
    how the rest of the document is parsed.

    I did hear of a problem with Netscape 6 where this didn't happen. The
    scripts were loaded asynchroneously. The only solution for that
    appeared to be to not rely on external scripts before the onload event
    was triggered.

    Netscape 6 was a very buggy browser.

    /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, Oct 23, 2003
    #2
    1. Advertising

  3. Thanks. I'll try the code in the Head outside a function wrapper.

    Luckily (?) for me the supported spec is for IE. I'm not deliberately
    IE-centric but if there are Netscape, etc. issues in this particular
    project the code will be passed on to somebody else's to play with in
    slowtime. Not, I hasten to add that I'd want that.

    Regards

    Mark


    "Lasse Reichstein Nielsen" <> wrote in message
    news:...
    > "Mark Anderson" <> writes:
    >
    > > If I take the cookie setting code out of it's function wrapper but still

    in
    > > the Head's <script> section will it execute as soon as it can?

    >
    > It should. As soon as it can is after all previous scripts have been
    > executed.
    >
    > > Or, would it be wiser to put it inline in the Body's content in a
    > > <script> tag? Presumably the Body onLoad checks for the external JS
    > > as well as the images, whereas run-on-load might cause the code to
    > > execute before the external JS was available and cause the code to
    > > fail?

    >
    > It shouldn't.
    >
    > If you have more than one script tag, it won't execute the second before
    > the first have loaded. The second could depend on functions from the

    first,
    > and the first could contain document.write's that completely change
    > how the rest of the document is parsed.
    >
    > I did hear of a problem with Netscape 6 where this didn't happen. The
    > scripts were loaded asynchroneously. The only solution for that
    > appeared to be to not rely on external scripts before the onload event
    > was triggered.
    >
    > Netscape 6 was a very buggy browser.
    >
    > /L
    > --
    > Lasse Reichstein Nielsen -
    > DHTML Death Colors:

    <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
    > 'Faith without judgement merely degrades the spirit divine.'
    Mark Anderson, Oct 23, 2003
    #3
    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. Daz
    Replies:
    5
    Views:
    331
  2. et
    Replies:
    0
    Views:
    181
  3. Eric Livingston

    Executing client script before page load

    Eric Livingston, Jan 23, 2008, in forum: ASP .Net Building Controls
    Replies:
    0
    Views:
    814
    Eric Livingston
    Jan 23, 2008
  4. max
    Replies:
    0
    Views:
    120
  5. dd
    Replies:
    8
    Views:
    128
Loading...

Share This Page