Executing code before page load complete...

M

Mark Anderson

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
 
L

Lasse Reichstein Nielsen

Mark Anderson said:
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
 
M

Mark Anderson

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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top