2008-09-18 82 views
1

我有一个专门在IE7(内部网站)上运行的asp.net应用程序。如何禁用浏览器回发警告对话框

当用户需要输入数据时,我弹出一个带窗体的子窗口。当表单关闭时,它会调用javascript:window.opener.location.reload(true),以便新数据显示在主页面上。

问题是,浏览器抱怨它必须重新发布页面。有什么办法可以关闭此功能吗?

回答

0

这是因为在window.opener页来自POST请求 也许你可以使用JavaScript的 :window.opener.location = window.opener 。位置;如果可以在没有POST的情况下获取数据,那么只需要GET请求。

1

这是ASP.NET的常见“回发”方式的问题。如果您需要重新加载没有此警告的页面,则此页面必须来自GET,而不是POST。你可以自己做一个Response.Redirect(“...”)。但是这会破坏视图状态的使用。

1

asp.net mvc修复了这个问题,不是ie7唯一的问题,而是大多数浏览器的安全功能。没有我知道的修复,除非你可以用js更新主表单中的内容而不是重新加载整个页面

0

我不相信有办法做到这一点。相反,为什么不直接父窗口没有重新加载页面。

的javascript:window.opener.location = '你的URL'

4

不,但有一个解决方案。它被普遍认为是在用户将数据发布到页面后立即使用302重定向的好设计。这可以防止弹出窗口发生。请允许我详细说明。

1)用户填写表单并通过POST提交数据。

2)后端接收数据并对其执行操作。

3),而不是返回的内容给用户的,后端发出302只要改它做处理页面(可能将用户重定向回完全相同的网址,如果需要的话)

4 )用户将看到的页面是您告诉浏览器重定向到的页面。他们将使用标准的GET请求加载重定向的页面。如果他们尝试刷新页面,则不会重新发布数据。问题解决了。

0

AFAIK,不通过您的脚本。

您可以试试:

window.opener.location = '#'; 

应该绕过浏览器重新发布。而且,您可以根据需要调整散列名称。

0

如果您从第1页移动到第2页,并且想要禁用浏览器返回第1页,请在第1页的顶部添加以下内容。

<script> 
if(window.history.forward(1) != null) 
       window.history.forward(1); 
</script>