Javascript 为什么window.onload会忽略回发?

Javascript 为什么window.onload会忽略回发?,javascript,asp.net,.net,Javascript,Asp.net,.net,考虑以下js代码(要在加载时单击asp.net按钮): 函数doSomething() { document.getElementById(“”)。单击(); } window.onload=doSomething; 加载页面时-执行按钮的代码隐藏,再次加载页面(带有新信息)。这本应该引入无限循环的bug,但事实并非如此。它只被调用一次,在回发时被忽略 为什么?假设您希望仅在页面第一次加载时调用doSomething方法: if(!Page.IsPostBack) { Page.C

考虑以下js代码(要在加载时单击asp.net
按钮
):

函数doSomething()
{
document.getElementById(“”)。单击();
}
window.onload=doSomething;
加载页面时-执行按钮的代码隐藏,再次加载页面(带有新信息)。这本应该引入无限循环的bug,但事实并非如此。它只被调用一次,在回发时被忽略


为什么?

假设您希望仅在页面第一次加载时调用
doSomething
方法:

 if(!Page.IsPostBack)
 {
    Page.ClientScript.RegisterStartupScript(GetType(), "buttonClickScript" "window.onload = doSomething;", true);
 }
您应该使用代码隐藏中的
page.RegisterStartupScript
将对
doSomething
的调用添加到页面中,但将其包装在if语句中,以检查它是否是回发。这样,您的方法将仅在页面第一次加载时调用:

 if(!Page.IsPostBack)
 {
    Page.ClientScript.RegisterStartupScript(GetType(), "buttonClickScript" "window.onload = doSomething;", true);
 }

页面如何重新加载??这是什么意思?为什么不使用Javascript中的
\u doPostBack()
方法?@ekanshratogi这是一个asp.net的东西-当执行codebehind时-页面会收到一个。当您手动单击按钮时,页面会回发吗?@ispiro如果您需要在单击按钮之前确认它不是回发,为什么不使用
!Page.IsPostBack
决定是否执行该代码?他问为什么没有无限循环,而不是如何修复它。我是基于OPs的评论:“我想知道我是否可以依靠它,而不是创建无限循环”。这样做,您不需要依赖它,也不需要创建无限循环。我认为描述的行为是因为OPs脚本是在asp.net生成的回发脚本加载并附加到按钮之前执行的。我不会依赖它,我会从服务器端代码控制页面流。