By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,685 Members | 1,663 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,685 IT Pros & Developers. It's quick & easy.

Executing code before page load complete...

P: n/a
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

Jul 20 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"Mark Anderson" <ma**@notmeyeardley.demon.co.uk> 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 - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 20 '05 #2

P: n/a
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" <lr*@hotpop.com> wrote in message
news:wu**********@hotpop.com...
"Mark Anderson" <ma**@notmeyeardley.demon.co.uk> 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 - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html> 'Faith without judgement merely degrades the spirit divine.'

Jul 20 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.