473,396 Members | 2,018 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

unload event more restrictive now on Safari 3.1 ?

I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera).
It also works for all Safari versions before 3.1.

It's as if they've deliberately made a change to prevent some actions in
the unload handler. Has anyone heard of such a restriction?

Here's the test case:

<html><body>
<a href="destination.html">click</a>
<script>
var started=new Date().getTime();
var imj;
function fin()
{
var diff=(new Date().getTime()-started)/1000;
imj=new Image();
imj.src="http://example.com/time.gif?"+diff;
// alert("fin");
}
if(window.addEventListener)
window.addEventListener('unload',fin,false);
else if(window.attachEvent)
window.attachEvent('onunload',fin);
</script>
<form><input type=button value="fin" onclick="fin()"></form>
</body></html>

Each time you click the fin form button, you see (via a http monitor
like Charles or Fiddler) that the image load occurs with the current
time delta since page load as a cache-busting query string. The file
gets a 404, but that doesn't matter, it's working fine when fin is
called from the form button.

If you instead click the link (or close the browser), fin is also called
(confirmable by uncommenting the alert), but the image load doesn't occur.
Jun 27 '08 #1
11 2414
Stevo wrote:
I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera).
It also works for all Safari versions before 3.1.

It's as if they've deliberately made a change to prevent some actions in
the unload handler. Has anyone heard of such a restriction?
Is nobody else affected by this?
Jun 27 '08 #2
On Jun 16, 10:29*am, Stevo <n...@mail.invalidwrote:
I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera).
It also works for all Safari versions before 3.1.

It's as if they've deliberately made a change to prevent some actions in
the unload handler. Has anyone heard of such a restriction?

Here's the test case:

<html><body>
<a href="destination.html">click</a>
<script>
var started=new Date().getTime();
var imj;
function fin()
{
* * * * var diff=(new Date().getTime()-started)/1000;
* * * * imj=new Image();
* * * * imj.src="http://example.com/time.gif?"+diff;
// * * *alert("fin");}

if(window.addEventListener)
* * * * window.addEventListener('unload',fin,false);
else if(window.attachEvent)
* * * * window.attachEvent('onunload',fin);
</script>
<form><input type=button value="fin" onclick="fin()"></form>
</body></html>

Each time you click the fin form button, you see (via a http monitor
like Charles or Fiddler) that the image load occurs with the current
time delta since page load as a cache-busting query string. The file
gets a 404, but that doesn't matter, it's working fine when fin is
called from the form button.

If you instead click the link (or close the browser), fin is also called
(confirmable by uncommenting the alert), but the image load doesn't occur.
I am trying to do the same thing (load the image on window unload) and
try everything imaginable to nothing works. It looks like it can't be
done and this may be a question to someone familiar with architecture
of Safari. It does work on all other major browsers though. If anybody
has a fix for this please let us know. Thanks.
Jul 1 '08 #3
On Jun 16, 4:29*pm, Stevo <n...@mail.invalidwrote:
I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera).
It also works for all Safari versions before 3.1.

It's as if they've deliberately made a change to prevent some actions in
the unload handler. Has anyone heard of such a restriction?

(...)

Each time you click the fin form button, you see (via a http monitor
like Charles or Fiddler) that the image load occurs with the current
time delta since page load as a cache-busting query string. The file
gets a 404, but that doesn't matter, it's working fine when fin is
called from the form button.

If you instead click the link (or close the browser), fin is also called
(confirmable by uncommenting the alert), but the image load doesn't occur.
Hi,

When the window is closed, I think that by the time the handler gets
called, Safari knows that the screen image of the current page is not
going to be refreshed again, this may explain why the trigger to fetch
the image never really happens.

When surfing away to another page, inserting the image into the DOM
migth be what forces it to load... or not.

Here the image gets loaded : See : http://tinyurl.com/6lrv49

You could instead use a synchronous XHR instead, S.O.P. permitting, to
send your data. (If the image request is being made just to send some
data back)
Or, you could try to request a <scriptinstead ? (it's S.O.P.-free,
and has nothing to do with screen updates).

HTH,
--Jorge.
Jul 1 '08 #4
On Jul 1, 7:05*pm, Jorge <jo...@jorgechamorro.comwrote:
On Jun 16, 4:29*pm, Stevo <n...@mail.invalidwrote:
I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera).
It also works for all Safari versions before 3.1.
It's as if they've deliberately made a change to prevent some actions in
the unload handler. Has anyone heard of such a restriction?
(...)
Each time you click the fin form button, you see (via a http monitor
like Charles or Fiddler) that the image load occurs with the current
time delta since page load as a cache-busting query string. The file
gets a 404, but that doesn't matter, it's working fine when fin is
called from the form button.
If you instead click the link (or close the browser), fin is also called
(confirmable by uncommenting the alert), but the image load doesn't occur.

Hi,

When the window is closed, I think that by the time the handler gets
called, Safari knows that the screen image of the current page is not
going to be refreshed again, this may explain why the trigger to fetch
the image never really happens.

When surfing away to another page, inserting the image into the DOM
migth be what forces it to load... or not.

Here the image gets loaded : See :http://tinyurl.com/6lrv49

You could instead use a synchronous XHR instead, S.O.P. permitting, to
send your data. (If the image request is being made just to send some
data back)
Or, you could try to request a <scriptinstead ? (it's S.O.P.-free,
and has nothing to do with screen updates).

HTH,
--Jorge.
Hi Jorge,

Unfortunatelly I can't use XMLHttpRequest is my script will be loaded
on 3rd party sites and permissions to run it crosss site are denied
(tried it before). The sad part is that Safari simly refuses to load
the images on page unload. I am trying to load the images using
img.src = ... and it works in all browsers but Safari. This will not
allow me to track exit links in Safari so if anyone has suggestions
how to overcome it I would really appreciate it. Thanks.
Jul 2 '08 #5
On Jul 2, 4:13*am, eliveme...@gmail.com wrote:
On Jul 1, 7:05*pm, Jorge <jo...@jorgechamorro.comwrote:
On Jun 16, 4:29*pm, Stevo <n...@mail.invalidwrote:
I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera)..
It also works for all Safari versions before 3.1.
It's as if they've deliberately made a change to prevent some actionsin
the unload handler. Has anyone heard of such a restriction?
(...)
Each time you click the fin form button, you see (via a http monitor
like Charles or Fiddler) that the image load occurs with the current
time delta since page load as a cache-busting query string. The file
gets a 404, but that doesn't matter, it's working fine when fin is
called from the form button.
If you instead click the link (or close the browser), fin is also called
(confirmable by uncommenting the alert), but the image load doesn't occur.
Hi,
When the window is closed, I think that by the time the handler gets
called, Safari knows that the screen image of the current page is not
going to be refreshed again, this may explain why the trigger to fetch
the image never really happens.
When surfing away to another page, inserting the image into the DOM
migth be what forces it to load... or not.
Here the image gets loaded : See :http://tinyurl.com/6lrv49
You could instead use a synchronous XHR instead, S.O.P. permitting, to
send your data. (If the image request is being made just to send some
data back)
Or, you could try to request a <scriptinstead ? (it's S.O.P.-free,
and has nothing to do with screen updates).
HTH,
--Jorge.

Hi Jorge,

Unfortunatelly I can't use XMLHttpRequest is my script will be loaded
on 3rd party sites and permissions to run it crosss site are denied
(tried it before). The sad part is that Safari simly refuses to load
the images on page unload. I am trying to load the images using
img.src = ... and it works in all browsers but Safari. This will not
allow me to track exit links in Safari so if anyone has suggestions
how to overcome it I would really appreciate it. Thanks.
Have you tried it with something like this

script= document.createElement("script");
script.type ='text/javascript';
script.charset ='utf-8';
script.src= "whatever?"+yourData;
(document.getElementsByTagName('head')[0]).appendChild(script);

instead of the <img?

--Jorge.
Jul 2 '08 #6
On Jul 1, 10:43*pm, Jorge <jo...@jorgechamorro.comwrote:
On Jul 2, 4:13*am, eliveme...@gmail.com wrote:


On Jul 1, 7:05*pm, Jorge <jo...@jorgechamorro.comwrote:
On Jun 16, 4:29*pm, Stevo <n...@mail.invalidwrote:
I've been using the unload event for a long time. I have this code,
which I've abstracted and made into a stripped down simple test case
below, and it works fine on the major browsers (IE5+, Firefox, Opera).
It also works for all Safari versions before 3.1.
It's as if they've deliberately made a change to prevent some actions in
the unload handler. Has anyone heard of such a restriction?
(...)
Each time you click the fin form button, you see (via a http monitor
like Charles or Fiddler) that the image load occurs with the current
time delta since page load as a cache-busting query string. The file
gets a 404, but that doesn't matter, it's working fine when fin is
called from the form button.
If you instead click the link (or close the browser), fin is also called
(confirmable by uncommenting the alert), but the image load doesn'toccur.
Hi,
When the window is closed, I think that by the time the handler gets
called, Safari knows that the screen image of the current page is not
going to be refreshed again, this may explain why the trigger to fetch
the image never really happens.
When surfing away to another page, inserting the image into the DOM
migth be what forces it to load... or not.
Here the image gets loaded : See :http://tinyurl.com/6lrv49
You could instead use a synchronous XHR instead, S.O.P. permitting, to
send your data. (If the image request is being made just to send some
data back)
Or, you could try to request a <scriptinstead ? (it's S.O.P.-free,
and has nothing to do with screen updates).
HTH,
--Jorge.
Hi Jorge,
Unfortunatelly I can't use XMLHttpRequest is my script will be loaded
on 3rd party sites and permissions to run it crosss site are denied
(tried it before). The sad part is that Safari simly refuses to load
the images on page unload. I am trying to load the images using
img.src = ... and it works in all browsers but Safari. This will not
allow me to track exit links in Safari so if anyone has suggestions
how to overcome it I would really appreciate it. Thanks.

Have you tried it with something like this

* * script= document.createElement("script");
* * script.type ='text/javascript';
* * script.charset ='utf-8';
* * script.src= "whatever?"+yourData;
* * (document.getElementsByTagName('head')[0]).appendChild(script);

instead of the <img?

--Jorge.- Hide quoted text -

- Show quoted text -
Hi Jorge,

I've tried the script approach you have suggested. Unfortunatelly it
did not work on Safari again. It did work for all other browsers (IE,
Firefox, Opera). As beofre, I suspect that Safari does not load or ads
element to the document while the document is unloading. The code is
executing without an error but the object doesn't load. I think this
question can only be answered by someone on Safari's technical team.:(
Not sure what else I can try at this point. Thanks anyways.

Jul 6 '08 #7
On Jul 6, 10:04*pm, eliveme...@gmail.com wrote:
Hi Jorge,

I've tried the script approach you have suggested. Unfortunatelly it
did not work on Safari again. It did work for all other browsers (IE,
Firefox, Opera). As beofre, I suspect that Safari does not load or ads
element to the document while the document is unloading. The code is
executing without an error but the object doesn't load. I think this
question can only be answered by someone on Safari's technical team.:(
Not sure what else I can try at this point. Thanks anyways.
I've entered it as a bug report @ https://bugs.webkit.org/ (# 19922).

HTH,
--Jorge.
Jul 7 '08 #8
Jorge wrote:
On Jul 6, 10:04 pm, eliveme...@gmail.com wrote:
I've entered it as a bug report @ https://bugs.webkit.org/ (# 19922).
--Jorge.
Thanks for logging that Jorge. The direct link for anyone that wants to
add their comments to the bug:

https://bugs.webkit.org/show_bug.cgi?id=19922

If they think it's only Jorge and me that have noticed it, they might
not be motivated enough to fix it. If it bothers you too, let them know.
Jul 7 '08 #9
On Jul 7, 5:01*am, Stevo <n...@mail.invalidwrote:
Jorge wrote:
On Jul 6, 10:04 pm, eliveme...@gmail.com wrote:
I've entered it as a bug report @https://bugs.webkit.org/(# 19922).
--Jorge.

Thanks for logging that Jorge. The direct link for anyone that wants to
add their comments to the bug:

https://bugs.webkit.org/show_bug.cgi?id=19922

If they think it's only Jorge and me that have noticed it, they might
not be motivated enough to fix it. If it bothers you too, let them know.
I want to mentioned that workaround proposed by Jorge is working only
in those cases when the script is loading on the same server where the
calling page resides. In my case, I am creating a tracking service
and new XMLHttpRequest() is not allowed to execute since this bit of
code is loading from another site (tracking service). Hopefully the
original bug will be resolved and I will be able to use img.src
assignment to load the tracking string. Thanks for all your help Jorge
and Stevo.
Jul 8 '08 #10
On Jul 7, 5:01*am, Stevo <n...@mail.invalidwrote:
Jorge wrote:
On Jul 6, 10:04 pm, eliveme...@gmail.com wrote:
I've entered it as a bug report @https://bugs.webkit.org/(# 19922).
--Jorge.

Thanks for logging that Jorge. The direct link for anyone that wants to
add their comments to the bug:

https://bugs.webkit.org/show_bug.cgi?id=19922

If they think it's only Jorge and me that have noticed it, they might
not be motivated enough to fix it. If it bothers you too, let them know.
Stevo,

Any luck getting through to webkit team? I get a feeling that this
will not be high on their priority list.
Thanks.
Jul 24 '08 #11
el********@gmail.com wrote:
On Jul 7, 5:01 am, Stevo <n...@mail.invalidwrote:
>Jorge wrote:
>>On Jul 6, 10:04 pm, eliveme...@gmail.com wrote:
I've entered it as a bug report @https://bugs.webkit.org/(# 19922).
--Jorge.
Thanks for logging that Jorge. The direct link for anyone that wants to
add their comments to the bug:

https://bugs.webkit.org/show_bug.cgi?id=19922

If they think it's only Jorge and me that have noticed it, they might
not be motivated enough to fix it. If it bothers you too, let them know.

Stevo,

Any luck getting through to webkit team? I get a feeling that this
will not be high on their priority list.
Thanks.
I've given up on that avenue of investigation. They don't seem to be
looking at any bugs below the priority of critical or blocker. I doubt
this will be dealt with before 3.2 is released, unless Jorge notices my
requests to increase the priority.

Until it gets resolved, we're having to offer a degraded service to
Safari 3.1 users.
Jul 24 '08 #12

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: Harry J. Smith | last post by:
I have written a Visual Basic program that does a long calculation and writes the results to disk as it runs. If I click the Close button the window closes but the program keeps running. How can I...
2
by: Marcia Gulesian | last post by:
The following code suppresses the 'enter' key, when run in I.E. 5.5 or later (Windows) but not when run in Safari (Mac) <body onkeypress="javascript:keysuppress(event)" > function...
1
by: David A. Beck | last post by:
I have a frameset with an index frame and a main frame. The aspx pages in the main frame are loaded based on the hyperlinks clicked in the index frame. In any aspx page in the main frame I want to...
1
by: hal | last post by:
I have an application that includes an activex component that consumes resources that must be released when the a page is unloaded. Toward this end I subscribe to the unload event of the body...
1
by: Hal | last post by:
My most sincere gratitude to anyone who can help me work around this! I have work that needs to be done in javascript on the client whenever a page is unloaded. To this end, I subscribe to...
6
by: Mike | last post by:
I have a web form in my application that will be used for both viewing and updating information. I have a requirement that if any data has been changed on the page and the user attempts to leave...
3
by: Gauthier Segay | last post by:
Hello, I've an application where all my pages implement a PAGE_CODE string property, this property is stored in HttpContext.Current.Items. In some page, I must persist data in session while...
2
by: Owen.Leibman | last post by:
Here is a complete web page: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <head> <title>Javascript Embed and onunload</title> <script type="text/javascript"> function useplayer() {...
5
by: =?Utf-8?B?U3RldmVuIFRhbmc=?= | last post by:
It seems that one page XBAP whose Unloaded event never get called, I need put some clearing stuff (I.G stop dispatcher time) when user close browser, it unload event doesn't work, where shall I...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.