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

Looking for an event trigger

P: n/a
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?

Oct 11 '06 #1
Share this Question
Share on Google+
15 Replies


P: n/a
Clever...@hotmail.com napisal(a):
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?
You can do it using AJAX. Put some java script code into page which
will make a request to your server when page is loaded to inform PHP
script that whole page's been loaded.

Oct 11 '06 #2

P: n/a
ASM
Cl*******@hotmail.com a écrit :
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?
<script type="text/javascript">

function sthg() {
document.body.style.background='orange';
}

onload = function() { sthg(); alert('all loaded'); };
</script>
does alert fires before all images loaded ?
Oct 11 '06 #3

P: n/a
Cl*******@hotmail.com wrote:
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?
Are you looking to execute some code on the server or the client? What
are you actually trying to do?

Remember - PHP is server side only. It has no direct contact with the
client. All it knows is when it's passed its data off to the web server
for sending to the client. It doesn't know what happens after that -
not even if the browser is closed or the connection dropped before the
page completed loading.

You can do it in Javascript on the client, and as Mateusz indicated you
can use AJAX to call a function back on the server.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Oct 11 '06 #4

P: n/a

ASM wrote:
Cl*******@hotmail.com a écrit :
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?

<script type="text/javascript">

function sthg() {
document.body.style.background='orange';
}

onload = function() { sthg(); alert('all loaded'); };
</script>
does alert fires before all images loaded ?
No, onload for the document fires when the HTML file is loaded. Img
tags have their own onload handlers. AFAIK not events are emitted on
things like background images.

Oct 11 '06 #5

P: n/a

Jerry Stuckle wrote:
Cl*******@hotmail.com wrote:
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?

Are you looking to execute some code on the server or the client? What
are you actually trying to do?

Remember - PHP is server side only. It has no direct contact with the
client. All it knows is when it's passed its data off to the web server
for sending to the client. It doesn't know what happens after that -
not even if the browser is closed or the connection dropped before the
page completed loading.

You can do it in Javascript on the client, and as Mateusz indicated you
can use AJAX to call a function back on the server.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
I was hoping to redirect the client to the next page once the first had
been loaded, so I guess some clientside javascript would be sufficient?

Oct 11 '06 #6

P: n/a
Cl*******@hotmail.com wrote:
Jerry Stuckle wrote:
>>Cl*******@hotmail.com wrote:
>>>I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?

Are you looking to execute some code on the server or the client? What
are you actually trying to do?

Remember - PHP is server side only. It has no direct contact with the
client. All it knows is when it's passed its data off to the web server
for sending to the client. It doesn't know what happens after that -
not even if the browser is closed or the connection dropped before the
page completed loading.

You can do it in Javascript on the client, and as Mateusz indicated you
can use AJAX to call a function back on the server.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================


I was hoping to redirect the client to the next page once the first had
been loaded, so I guess some clientside javascript would be sufficient?
You could, but then why even load the first page? It will just flash up
there then go to the next page.

If I were the client I would be very upset about this.

But if you insist, you can do it with an html redirect. Check the
alt.html newsgroup for help on how to do it.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Oct 11 '06 #7

P: n/a

Jerry Stuckle wrote:
Cl*******@hotmail.com wrote:
Jerry Stuckle wrote:
>Cl*******@hotmail.com wrote:

I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?
Are you looking to execute some code on the server or the client? What
are you actually trying to do?

Remember - PHP is server side only. It has no direct contact with the
client. All it knows is when it's passed its data off to the web server
for sending to the client. It doesn't know what happens after that -
not even if the browser is closed or the connection dropped before the
page completed loading.

You can do it in Javascript on the client, and as Mateusz indicated you
can use AJAX to call a function back on the server.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================

I was hoping to redirect the client to the next page once the first had
been loaded, so I guess some clientside javascript would be sufficient?

You could, but then why even load the first page? It will just flash up
there then go to the next page.

If I were the client I would be very upset about this.

But if you insist, you can do it with an html redirect. Check the
alt.html newsgroup for help on how to do it.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Well the first page does the processing that the second page needs
before it can be displayed, the processing is done by pages loaded
within image tags, there are over 4,000 of them and the processing time
will obviously vary, hence why I wanted the trigger to activate once
the page and all the images had loaded.

Oct 12 '06 #8

P: n/a
Cl*******@hotmail.com wrote:
Jerry Stuckle wrote:
>>Cl*******@hotmail.com wrote:
>>>Jerry Stuckle wrote:
Cl*******@hotmail.com wrote:
>I'm hoping to execute some code "when the page has completely finished
>loading" by which I mean the page and all the images on it, does anyone
>know of a way to do this?
>

Are you looking to execute some code on the server or the client? What
are you actually trying to do?

Remember - PHP is server side only. It has no direct contact with the
client. All it knows is when it's passed its data off to the web server
for sending to the client. It doesn't know what happens after that -
not even if the browser is closed or the connection dropped before the
page completed loading.

You can do it in Javascript on the client, and as Mateusz indicated you
can use AJAX to call a function back on the server.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
I was hoping to redirect the client to the next page once the first had
been loaded, so I guess some clientside javascript would be sufficient?

You could, but then why even load the first page? It will just flash up
there then go to the next page.

If I were the client I would be very upset about this.

But if you insist, you can do it with an html redirect. Check the
alt.html newsgroup for help on how to do it.


Well the first page does the processing that the second page needs
before it can be displayed, the processing is done by pages loaded
within image tags, there are over 4,000 of them and the processing time
will obviously vary, hence why I wanted the trigger to activate once
the page and all the images had loaded.
OK, I understand the pages doing the processing. But why would you send
any data to the client if it's not meant to be seen, anyway?

And in a case like that, why would you care if the page is loaded or not?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Oct 12 '06 #9

P: n/a

Jerry Stuckle wrote:
Cl*******@hotmail.com wrote:
Jerry Stuckle wrote:
>Cl*******@hotmail.com wrote:

Jerry Stuckle wrote:
Cl*******@hotmail.com wrote:
I'm hoping to execute some code "when the page has completely finished
loading" by which I mean the page and all the images on it, does anyone
know of a way to do this?
Are you looking to execute some code on the server or the client? What
are you actually trying to do?

Remember - PHP is server side only. It has no direct contact with the
client. All it knows is when it's passed its data off to the web server
for sending to the client. It doesn't know what happens after that -
not even if the browser is closed or the connection dropped before the
page completed loading.

You can do it in Javascript on the client, and as Mateusz indicated you
can use AJAX to call a function back on the server.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
I was hoping to redirect the client to the next page once the first had
been loaded, so I guess some clientside javascript would be sufficient?
You could, but then why even load the first page? It will just flash up
there then go to the next page.

If I were the client I would be very upset about this.

But if you insist, you can do it with an html redirect. Check the
alt.html newsgroup for help on how to do it.

Well the first page does the processing that the second page needs
before it can be displayed, the processing is done by pages loaded
within image tags, there are over 4,000 of them and the processing time
will obviously vary, hence why I wanted the trigger to activate once
the page and all the images had loaded.

OK, I understand the pages doing the processing. But why would you send
any data to the client if it's not meant to be seen, anyway?

And in a case like that, why would you care if the page is loaded or not?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
The page needs to finish loading for all of the processing to complete.
Each image on the first page corresponds to a certain portion of the
work that needed doing before the second page is shown. If the second
page is shown before the first one is finished the information on it
will be wrong.
I've done the data processing this way as my host has a maximum
execution time of 30 seconds and only supports web languages - not
things like java/c.
The images also show information about what happened in the process,
which is useful for debugging, but will most likely be ignored by the
client.

Oct 12 '06 #10

P: n/a
Cl*******@hotmail.com wrote:
Jerry Stuckle wrote:
>>Cl*******@hotmail.com wrote:
>>>Jerry Stuckle wrote:
Cl*******@hotmail.com wrote:
>Jerry Stuckle wrote:
>
>
>
>>Cl*******@hotmail.com wrote:
>>
>>
>>
>>>I'm hoping to execute some code "when the page has completely finished
>>>loading" by which I mean the page and all the images on it, does anyone
>>>know of a way to do this?
>>>
>>
>>Are you looking to execute some code on the server or the client? What
>>are you actually trying to do?
>>
>>Remember - PHP is server side only. It has no direct contact with the
>>client. All it knows is when it's passed its data off to the web server
>>for sending to the client. It doesn't know what happens after that -
>>not even if the browser is closed or the connection dropped before the
>>page completed loading.
>>
>>You can do it in Javascript on the client, and as Mateusz indicated you
>>can use AJAX to call a function back on the server.
>>
>>--
>>==================
>>Remove the "x" from my email address
>>Jerry Stuckle
>>JDS Computer Training Corp.
>>js*******@attglobal.net
>>==================
>
>
>I was hoping to redirect the client to the next page once the first had
>been loaded, so I guess some clientside javascript would be sufficient?
>

You could, but then why even load the first page? It will just flash up
there then go to the next page.

If I were the client I would be very upset about this.

But if you insist, you can do it with an html redirect. Check the
alt.html newsgroup for help on how to do it.

Well the first page does the processing that the second page needs
before it can be displayed, the processing is done by pages loaded
within image tags, there are over 4,000 of them and the processing time
will obviously vary, hence why I wanted the trigger to activate once
the page and all the images had loaded.

OK, I understand the pages doing the processing. But why would you send
any data to the client if it's not meant to be seen, anyway?

And in a case like that, why would you care if the page is loaded or not?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================

The page needs to finish loading for all of the processing to complete.
Each image on the first page corresponds to a certain portion of the
work that needed doing before the second page is shown. If the second
page is shown before the first one is finished the information on it
will be wrong.
I've done the data processing this way as my host has a maximum
execution time of 30 seconds and only supports web languages - not
things like java/c.
The images also show information about what happened in the process,
which is useful for debugging, but will most likely be ignored by the
client.
OK, but there's no guarantee just because you send something to the
client that it will be displayed immediately. It can be buffered by PHP
and the web server. You can get around this most of the time with
ob_flush() and flush(), but additionally, the browser may not display
the data until the page is loaded.

With images it's even harder. When you sent the <imgtag you are not
sending the image itself. The browser has to receive the tag, then go
back to the server and fetch the image. It may do that immediately on
receipt of the tag, or it may wait until the page is loaded.

The bottom line is - sending images like this for progress is at best a
hit and miss proposition.

Maybe you can get around your problem (and the timeout problem) with
help from javascript. Instead of trying to do everything in one page,
do a little processing and send a page to the client (including the
image you wish). In that one use the onload property for the body to
load the next page in the sequence.

That way your client will see the images, and since you've broken up
your processing you don't run into the 30s limit.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Oct 13 '06 #11

P: n/a
I realise that once the html in the page has been sent the browser
still needs to load all of the images, that's why the onload won't
work, and why I was looking for a trigger that fires "once the page and
all the images on it have loaded"

I'm reluctant to change the language of the processing script as it's
taken me quite some time to write it all, at the moment I've just got a
link at the bottom of the processing page saying "once the above box is
completely full please click here", unless there is something which can
do that automatically I think I will just forget about it and rely on
someone's built in clicking skills.

Oct 13 '06 #12

P: n/a

Cl*******@hotmail.com wrote:
I realise that once the html in the page has been sent the browser
still needs to load all of the images, that's why the onload won't
work, and why I was looking for a trigger that fires "once the page and
all the images on it have loaded"

I'm reluctant to change the language of the processing script as it's
taken me quite some time to write it all, at the moment I've just got a
link at the bottom of the processing page saying "once the above box is
completely full please click here", unless there is something which can
do that automatically I think I will just forget about it and rely on
someone's built in clicking skills.
As mentioned already, each img tag would emit an onload event. The
event doesn't bubble up so you have to add onload=" ... " to each tag.
Now, if you just increment a counter as the images load and do a
redirect when it reaches the total, you'll have what you need. Simple,
no?

Oct 13 '06 #13

P: n/a

Chung Leong napisal(a):
Cl*******@hotmail.com wrote:
I realise that once the html in the page has been sent the browser
still needs to load all of the images, that's why the onload won't
work, and why I was looking for a trigger that fires "once the page and
all the images on it have loaded"

I'm reluctant to change the language of the processing script as it's
taken me quite some time to write it all, at the moment I've just got a
link at the bottom of the processing page saying "once the above box is
completely full please click here", unless there is something which can
do that automatically I think I will just forget about it and rely on
someone's built in clicking skills.

As mentioned already, each img tag would emit an onload event. The
event doesn't bubble up so you have to add onload=" ... " to each tag.
Now, if you just increment a counter as the images load and do a
redirect when it reaches the total, you'll have what you need. Simple,
no?

function waitForImages()
{
while(!document.images[document.images.length-1].complete);
document.location.href = '/loaded';
}

waitForImages();

Isn't easier?

Oct 13 '06 #14

P: n/a
Mateusz Markowski wrote:
Chung Leong napisal(a):
Cl*******@hotmail.com wrote:
I realise that once the html in the page has been sent the browser
still needs to load all of the images, that's why the onload won't
work, and why I was looking for a trigger that fires "once the page and
all the images on it have loaded"
>
I'm reluctant to change the language of the processing script as it's
taken me quite some time to write it all, at the moment I've just got a
link at the bottom of the processing page saying "once the above box is
completely full please click here", unless there is something which can
do that automatically I think I will just forget about it and rely on
someone's built in clicking skills.
As mentioned already, each img tag would emit an onload event. The
event doesn't bubble up so you have to add onload=" ... " to each tag.
Now, if you just increment a counter as the images load and do a
redirect when it reaches the total, you'll have what you need. Simple,
no?


function waitForImages()
{
while(!document.images[document.images.length-1].complete);
document.location.href = '/loaded';
}

waitForImages();

Isn't easier?
I'm pretty sure that would cause the browser to freeze.

Oct 13 '06 #15

P: n/a

Chung Leong napisal(a):
Mateusz Markowski wrote:
Chung Leong napisal(a):
Cl*******@hotmail.com wrote:
I realise that once the html in the page has been sent the browser
still needs to load all of the images, that's why the onload won't
work, and why I was looking for a trigger that fires "once the page and
all the images on it have loaded"

I'm reluctant to change the language of the processing script as it's
taken me quite some time to write it all, at the moment I've just got a
link at the bottom of the processing page saying "once the above box is
completely full please click here", unless there is something which can
do that automatically I think I will just forget about it and rely on
someone's built in clicking skills.
>
As mentioned already, each img tag would emit an onload event. The
event doesn't bubble up so you have to add onload=" ... " to each tag.
Now, if you just increment a counter as the images load and do a
redirect when it reaches the total, you'll have what you need. Simple,
no?

function waitForImages()
{
while(!document.images[document.images.length-1].complete);
document.location.href = '/loaded';
}

waitForImages();

Isn't easier?

I'm pretty sure that would cause the browser to freeze.
True, works only on Opera.

Oct 13 '06 #16

This discussion thread is closed

Replies have been disabled for this discussion.