我如何在多个usercontrols中使用pageLoad函数

时间:2011-07-08 17:58:21

标签: javascript asp.net

我有3个用户控件,每个人在javascript中使用了pageLoad函数,那些用户控件在页面中,页面有自己的pageLoad函数。但只有我在页面中注册的最后一个usercontrol的pageLoad函数被触发而其他人没有被触发

<script type="text/javascript">

...
function pageLoad() {
    alert('page load - uc1');
    .....
}
...

请帮我解决所有功能

感谢

2 个答案:

答案 0 :(得分:2)

您可以为每个控件定义javascript函数,并在Application.Init和PageRequestManager.EndRequest事件上执行它:

客户方:

function controlSpecificPageLoadFunction(){ alert("Hello, pageLoad!"); }

代码背后:

if(!IsPostBack)
{
    var script = "Sys.Application.add_init(controlSpecificPageLoadFunction); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(controlSpecificPageLoadFunction)";
    ScriptManager.RegisterStartupScript(this, this.GetType(), "thisControlPageLoad", script, true);
}

答案 1 :(得分:1)

有一种称为不引人注目的JavaScript的范例越来越受欢迎。你应该阅读它。

http://labs.adobe.com/technologies/spry/articles/best_practices/separating_behavior.html

http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

基本上不是说onload="myfunction()",而是在JS本身中连接处理程序......

document.getElementById('myElement').addEventListener('click', myfunction)

function myfunction() { ... }

在你的情况下,它会像

document.body.addEventListener('load', myfunction);

然而,这有其自身的陷阱。我强烈建议使用jQuery,MooTools,Dojo或EXT等库,而不是从头开始编写JavaScript。