2011-02-08 111 views
1

我在我的404页面上有一个窗体,自动填充用户试图找到的地址。我也有JavaScript,然后自动提交该表单。自动填写表格并提交

问题是,一旦它自动提交,它会保持循环,并且页面不断重新加载。

我想赖特JavaScript代码发射一次,然后停止。 该脚本在页面加载时触发,这就是导致循环的原因。

结果:我需要它在页面加载时触发,页面重新加载,代码检查是否已经重新加载一次然后停止。

对于我的测试,我试图让它弹出一个警告,说“我重新加载一次”,只是让我知道它的工作。

这是到目前为止我的代码

<script type="text/javascript"> 
window.onload = function() { 
var grabedurl = window.location.href 
document.getElementById('badurl').value=grabedurl; 
if(history.previous != history.current){alert('I reloaded once')} 
else 
setTimeout("document.getElementById('errorsubmit').click()", 3000);} 
</script> 

回答

1

你可以做的是增加了页面的状态已经已经重新加载与否的URL的查询字符串部分。这应该在您的formaction中完成,例如, action="?submitted"

window.onload = function() 
{ 
    var form = document.getElementById("aspnetForm"); 
    form.setAttribute("action", form.getAttribute("action") + "&submitted"); 
    var grabedurl = window.location.href; 
    document.getElementById('badurl').value = grabedurl; 
    if (/submitted/.test(window.location.search.substring(1))) 
    { 
     alert('I reloaded once'); 
    } 
    else 
    { 
     setTimeout("document.getElementById('errorsubmit').click()", 3000); 
    } 
} 

然而,你可能要考虑以其他方式 - 如通过提交一个XMLHttpRequest的形式;有另一个,单独action页面提交表单,或让服务器登录请求。

+0

我们正在使用名为Ektron的内容管理解决方案。这意味着我无法更改表单操作或XML Http请求。 :( – 2011-02-08 21:48:00