Ti faccio anch'io un esempio.
A progetta la sua pagina aspx e mette pure il suo onload client per fare delle operazioni.
B progetta il controllo utente il quale deve fare qualche cosa nell'evento client onload della pagina che ospita il controllo utente.
B NON DEVE MODIFICARE L'EVENTO ONLOAD PREDISPOSTO DA A, MA SOLO AGGIUNGERLO.
Detto questo, (è solo un esempio, bada bene), il controllo utente, con un pulsante server, vuole mandare un messaggio di alert al client, nell'evento onload della pagina.
codice:
<%@ Control Language="C#" ClassName="WebUserControl" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
ModuloWeb.MsgBox(this.Page, "Ciao, Mondo!");
}
</script>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
il MsgBox è una funzione di libreria scritta in basic (utilizzabile pure da c# alla bisogna)
codice:
'----------------------------------------------------------------
'scrive un messaggio nel client
'----------------------------------------------------------------
Public Sub MsgBox(ByVal This As System.Web.UI.Page, ByVal s$)
s = s.Replace("\", "\\")
s = s.Replace(vbNewLine, "\n")
s = s.Replace("'", "\'")
s = String.Format("var func = function(){{alert('{0}');}};var oldonload = window.onload;if (typeof window.onload != 'function') {{window.onload = func;}}else {{window.onload = function() {{oldonload();func();}}}}", s)
Dim ScriptString$ = ""
ScriptString += "<script type=""text/javascript"" >" & vbCrLf
ScriptString += s & vbCrLf
ScriptString += "</script>" & vbCrLf
'This.RegisterStartupScript("clientscript", ScriptString)
This.ClientScript.RegisterStartupScript(This.GetType, "messagebox", s, True)
End Sub
il javascript prodotto, per chiarezza formattato con commenti è:
codice:
<script type="text/javascript">
<!--
//questa è la funzione da accodare all'evento onload
var func = function()
{
alert('Ciao, Mondo!');
};
//salvo la eventuale onload preesistente
var oldonload = window.onload;
//se non esiste la funzione onload, la
//imposto uguale a func
if (typeof window.onload != 'function')
{
window.onload = func;
}
else
//se esiste già onload, accodo la mia funzine func
{
window.onload = function()
{
oldonload();
func();
}
}
// -->
</script>
Non so se è questo che volevi
comunque fai sapere