Javascript 使用onload事件避免无限循环
我对javascript相当陌生,我遇到了一个问题: 我有一个通过jsp页面中的按钮调用操作的方法 问题是,我希望在加载jsp页面后立即执行此操作,而不必使用button事件 我试图在JSP主体中使用onload()事件。这确实会在加载后执行我的操作,但是,它会停留在一个无限循环中,因为它会一次又一次地加载页面Javascript 使用onload事件避免无限循环,javascript,jsp,loops,onload,infinite,Javascript,Jsp,Loops,Onload,Infinite,我对javascript相当陌生,我遇到了一个问题: 我有一个通过jsp页面中的按钮调用操作的方法 问题是,我希望在加载jsp页面后立即执行此操作,而不必使用button事件 我试图在JSP主体中使用onload()事件。这确实会在加载后执行我的操作,但是,它会停留在一个无限循环中,因为它会一次又一次地加载页面 <script language="JavaScript" type="text/javascript"> function send() {
<script language="JavaScript" type="text/javascript">
function send()
{
document.forms['thisForm'].submit();
}
</script
....
<body onload="send()">
<html:form action="/something/foo.do?method=methodFoo" method="post">
函数send()
{
document.forms['thisForm'].submit();
}
您可以尝试在不提交表单的情况下执行操作。解决此问题的方法有很多,但我将从我最喜欢的方法开始:
BODY onLoad="window.location.href='EXAMPLE.html';" onUnload="send();"
这里发生的事情是,它做的第一件事是将您传递到一个新的网页(“EXAMPLE.html”),但它必须在退出时运行您的JavaScript。通过这样做,它无法进入无限循环
另一种方法:
BODY onLoad="send();window.close();"
使用此命令,它将在运行命令后尝试关闭窗口。我不太喜欢这个,因为window.close命令的行为可能会因使用的浏览器而异,而且几乎总是需要个人同意才能关闭它。但是,它可能适合您。重构代码,使其不在每次加载页面时都提交表单编辑听起来像“submit()”,必须使正文再次加载。否则怎么会有无限循环?@mareoraft必须引起,当您提交表单时,浏览器会发送请求。除非返回false,否则请求将刷新浏览器。浏览器刷新并看到:send()
,然后再次出现……我无法在我正在处理的项目的当前环境中使用AJAX:/这是我看到的唯一方式。您可以尝试重构代码以导航到另一个不再具有“submit()”的页面。