La tua analisi mi sembra corretta, solo che non ci sono le conclusioni, ossia qualla di non utilizzare quella orribile funzione
Guardando negli esempi che ho archiviato, ne ho trovato uno che forse si adatta al tuo problema. Utilizza prototype. E' una pagina server perciò prendi il codice javascript ignorando il resto. Come vedi, il cuore è la funzione di callback, showResponse, dove viene richiamato il setTimeout. Quella funzionaccia, l'innominabile, si libera proprio del cuore, la callback: ecco perchè non funzionerà mai nella realtà. Ciao
codice:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="news.aspx.vb" Inherits="prove_a" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina senza titolo</title>
<link href="../../../../App_Themes/Tema1/StyleSheet.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../../../../js/prototype.js"></script>
<script language="javascript" type="text/javascript">
// <!CDATA[
window.onload = function()
{
window.setTimeout(aggiorna_marquee, 10000);
}
function aggiorna_marquee()
{
var url_action = "?comando_ajax=aggiorna_marquee";
var parametri = "";
new Ajax.Request(url_action, { onComplete:showResponse, parameters:parametri } );
function showResponse(originalRequest)
{
var t = originalRequest.responseText;
$("mr_1").innerHTML = t;
window.setTimeout(aggiorna_marquee, 10000);
}
}
function aggiungi_new()
{
$("div1").innerHTML = "<img alt=\"attendere...\" src=\"../../../../immagini/indicator.white.gif\" />";
var url_action = "?comando_ajax=aggiorna_new";
var parametri = "p_new=" + encodeURIComponent($("TextArea1").value);
new Ajax.Request(url_action, { onComplete:showResponse, parameters:parametri } );
function showResponse(originalRequest)
{
var t = originalRequest.responseText;
$("div1").innerHTML = t;
}
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<marquee id="mr_1" runat="server" direction="up" scrolldelay="100" scrollamount="1" style="background-color:Bisque" ></marquee>
<textarea id="TextArea1" style="width: 571px; height: 275px"></textarea>
Aggiungi new
<div id="div1">[img]../../../../immagini/indicator.white.gif[/img]</div>
</div>
</form>
</body>
</html>