I have a web site where we have a few elements that call javascript functions on the onclick. The javascript functions will do some processing and what not and eventually call a window.location to change the url. In Safari (mac only) window.location is not being processed until the current page is fully loaded.

window.location = 'http://google.com';

This is hard to reproduce because most sites load up pretty fast, but on our site we have different tracking / logging pixels that sometimes take a while for the page to 'fully' load so if I click any of these elements that do a window.location call, the page will not change until the current page is loaded.

I haven't been able to find a way around this. This works fine in IE, Firefox, and Safari for Windows but not on the Mac version. I also thought okay maybe I could just stop the page from loading, but I haven't found an equivalent for window.stop() in Safari.

Any help is greatly appreciated.

Thanks,
Victor

Some browsers do not do ANY processing until the download of the initial page is complete. This is beyond your control. You need to allow for this when designing your pages.

Some browsers do not do ANY processing until the download of the initial page is complete. This is beyond your control. You need to allow for this when designing your pages.

That I can understand but all the other javascript will run fine on the page. For example I have script hide/show divs when clicked, to modify cookies, etc. All that gets run, it's just the window.location call won't get executed until the page is fully loaded.

I've been trying to figure out ways around it, but nothing has come to mind yet. We have a search box that dynamically builds your url depending on what you entered, and what check boxes you checked, but clicking the search button won't replace the window.location because of the page not fully loaded.

This article has been dead for over six months. Start a new discussion instead.