Executing code before page load complete...

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mark Anderson

    Executing code before page load complete...

    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('l astPage');
    var expDate = new Date();
    expDate.setTime ( expDate.getTime () + ( myDuration * 60 * 60 * 1000 ) );
    setCookie('last Page', 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="JavaS cript"
    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



  • Lasse Reichstein Nielsen

    #2
    Re: Executing code before page load complete...

    "Mark Anderson" <mark@notmeyear dley.demon.co.u k> writes:
    [color=blue]
    > 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?[/color]

    It should. As soon as it can is after all previous scripts have been
    executed.
    [color=blue]
    > 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?[/color]

    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 - lrn@hotpop.com
    DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleD OM.html>
    'Faith without judgement merely degrades the spirit divine.'

    Comment

    • Mark Anderson

      #3
      Re: Executing code before page load complete...

      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" <lrn@hotpop.com > wrote in message
      news:wuav25zu.f sf@hotpop.com.. .[color=blue]
      > "Mark Anderson" <mark@notmeyear dley.demon.co.u k> writes:
      >[color=green]
      > > If I take the cookie setting code out of it's function wrapper but still[/color][/color]
      in[color=blue][color=green]
      > > the Head's <script> section will it execute as soon as it can?[/color]
      >
      > It should. As soon as it can is after all previous scripts have been
      > executed.
      >[color=green]
      > > 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?[/color]
      >
      > 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[/color]
      first,[color=blue]
      > 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 - lrn@hotpop.com
      > DHTML Death Colors:[/color]
      <URL:http://www.infimum.dk/HTML/rasterTriangleD OM.html>[color=blue]
      > 'Faith without judgement merely degrades the spirit divine.'[/color]


      Comment

      Working...