CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   DOM and JSON scripting (http://www.codingforums.com/forumdisplay.php?f=15)
-   -   Initialize/Load Javascript on page load from local links (http://www.codingforums.com/showthread.php?t=289247)

amazing2061 03-06-2013 08:05 PM

Initialize/Load Javascript on page load from local links
 
The code below works fine, I think its short enough that showing it here should not offend or violate any rules. Here's the story: The code is a banner rotator script and as I said earlier it works fine. I have it installed on the home page of a mobile site. The problem is that when I visit other pages of the mobile site and then return back to the home page the banners don't rotate any more. They only start again if I refresh/reload the page manually with the browser. I guess I need to know how to make the script load every time the home page is accessed from a local site link to initialize it again. TIA

[CODE]<script type="text/javascript">
var imgs1 = new Array("http://www.nunucarservice.com/m/data1/images/nunuad.jpg","http://www.nunucarservice.com/m/data1/images/nunuad2.jpg");
var lnks1 = new Array("www.nunucarservice.com/m/help.html","http://www.nunucarservice.com/m/help.html");
var alt1 = new Array();
var currentAd1 = 0;
var imgCt1 = 2;
function cycle1() {
if (currentAd1 == imgCt1) {
currentAd1 = 0;
}
var banner1 = document.getElementById('adBanner1');
var link1 = document.getElementById('adLink1');
banner1.src=imgs1[currentAd1]
banner1.alt=alt1[currentAd1]
document.getElementById('adLink1').href=lnks1[currentAd1]
currentAd1++;
}
window.setInterval("cycle1()",3000);
</script>
<a id="adLink1" target="_top"> <img id="adBanner1" style="border: 0;" style="border: 0;" src="http://www.nunucarservice.com/m/data1/images/nunuad.jpg" src="http://www.nunucarservice.com/m/data1/images/nunuad.jpg" alt="" border="0" width="100%"></a></div>[CODE]

sbhmf 03-08-2013 07:33 AM

I wonder if adding an onfocus event to the document that will call the setTimeout function will get it going again...?

felgall 03-08-2013 08:24 AM

Try moving the JavaScript to just before the </body> tag where most JavaScript belongs.

Moving the script will fix your problem because with the script at the top it tries to run before the HTML has loaded when it is already cached by the browser.

You should also fix the setInterval call - it expects a function not a string in the first parameter.

window.setInterval(cycle1,3000);

sbhmf 03-08-2013 05:12 PM

Although you are correct that the object itself must be entered for the parameter and not a string, I expect that the setInterval function's parameters are already correct, since it works fine when initially loaded.

Seems to me that the script is not executing when the window displays the document from its history's cache, accessed via the browser's back button, and I wonder therefore if triggering setInterval via the document's onfocus event might relaunch script execution.

felgall 03-08-2013 08:23 PM

Quote:

Originally Posted by sbhmf (Post 1319159)
Although you are correct that the object itself must be entered for the parameter and not a string, I expect that the setInterval function's parameters are already correct, since it works fine when initially loaded.

No you are forcing it to eval() the string in the first parameter. What you have will work it is just not as efficient as if you were to pass the parameter correctly.

Quote:

Originally Posted by sbhmf (Post 1319159)
Seems to me that the script is not executing when the window displays the document from its history's cache,

Yes it is but it is running first before the HTML has loaded and therefore crashes because the HTML it is trying to update doesn't exist yet.

MOVE THE SCRIPT TO THE BOTTOM OF THE PAGE AND IT WILL THEN WORK.


All times are GMT +1. The time now is 10:52 AM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.