Salve Suppongo che si vorrebbe carico pagina completamente prima di avviare il timer per caricare l'URL successivo, altrimenti finirai per mostrare l'URL successivo prima dell'ex viene visualizzata anche la pagina di istanza (a seconda della velocità di internet). In secondo luogo hai detto che vuoi ruotare gli URL. Di seguito si riporta il codice testato sul presente:
<html>
<head>
<title></title>
<style type="text/css">
</style>
<script type="text/javascript">
var urls = [
"http://www.google.com"
,"http://www.yahoo.com"
,"http://www.ajaxian.com"
,"http://www.ebay.com"
];
function showUrl(idx) {
alert(idx + " Showing " + urls[idx]);
var f = document.getElementById("f");
// call the next load after 5 seconds only after
// this iframe loads
f.onload = function() {
var next = ++idx % urls.length;
setTimeout(function(){
showUrl(next);
}, 5000);
}
// set the src
f.src = urls[idx];
}
</script>
</head>
<body onload="showUrl(0)" class="app-chrome">
<iframe id="f" src="about:blank"></iframe>
</body>
</html>
Aggiunta di una versione più compatta: (Lavori in IE6, FF, Opera, cromo)
<script type="text/javascript">
window.onload = (function(urls, interval) {
var idx = 0;
var bAttached = false;
return function showUrl() {
var f = document.getElementById("f");
var onLoad = function() { // loading only after previous page loads
idx = ++idx % urls.length; // rotation
setTimeout(showUrl, interval);
}
if(! bAttached) {
if(navigator.userAgent.indexOf("MSIE") !== -1) {
f.attachEvent("onload", onLoad);
bAttached = true;
}else {
f.onload = onLoad;
}
bAttached = true;
}
f.src = urls[idx];
};
})([
"http://www.google.com" ,"http://www.yahoo.com" ,
"http://www.sun.com" ,"http://www.ebay.com"
], 5000
);
</script>
Controlla la mia risposta (2a versione), funziona in IE6 – naikus
Suggerirei di aggiungere dinamicamente lo
@Ozaki può fornire un esempio di pls. Grazie. – tonyf