我有3个用户控件,每个人在javascript中使用了pageLoad函数,那些用户控件在页面中,页面有自己的pageLoad函数。但只有我在页面中注册的最后一个usercontrol的pageLoad函数被触发而其他人没有被触发
<script type="text/javascript">
...
function pageLoad() {
alert('page load - uc1');
.....
}
...
请帮我解决所有功能
感谢
答案 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。