如何禁用浏览器回发警告对话框
我有一个专门在IE7(内部网站)上运行的asp.net应用程序。
当用户需要输入数据时,我会弹出一个带有窗体的子窗口。表单关闭时,它将调用javascript:window.opener.location.reload(true),以便新数据将显示在主页上。
问题在于浏览器抱怨它必须重新发布页面。有什么办法可以关闭此功能?
解决方案
这是ASP.NET通常的"回发"方式所存在的问题。如果我们需要在没有此警告的情况下重新加载页面,则该页面必须来自GET,而不是POST。我们可以自己执行Response.Redirect(" ...")。但这将破坏viewstate的使用。
asp.net mvc可以解决此问题,而不是仅是ie7的问题,而是大多数浏览器的安全功能。除了我们可以使用js更新主表单中的内容,而不是重新加载整个页面外,我没有其他解决方法
我不认为有办法做到这一点。相反,为什么不将父窗口定向到没有重新加载的页面。
javascript:window.opener.location ='网址'
这是因为window.opener中的页面来自POST请求
也许你可以使用
javascript:window.opener.location = window.opener.location;如果无需POST即可获取数据,则仅执行GET请求。
不,但是有解决方案。通常认为,有人在将数据发布到页面后立即使用302重定向的好设计。这样可以防止该弹出窗口发生。请允许我详细说明。
1)用户填写表格并通过POST提交数据。
2)后端接收数据并对其进行操作。
3)后端没有将内容返回给用户,而是在处理完页面后立即发出302重定向(如果需要,可以将用户重定向回完全相同的网址)
4)用户将看到的页面是我们告诉其浏览器重定向到的页面。他们将使用标准的GET请求加载重定向页面。如果他们尝试刷新页面,它将不会重新发布数据。问题解决了。
AFAIK,而不是通过脚本。
我们可以尝试:
window.opener.location = '#';
它应该避免浏览器重新发布。并且,我们可以根据需要调整哈希名称。
如果我们从第1页移至第2页,并希望禁用浏览器返回第1页,则在第1页顶部添加以下内容。
<script> if(window.history.forward(1) != null) window.history.forward(1); </script>