页面重定向问题!!!

时间:2021-04-12 13:42:00
我的网站是这样的,首页有一个导航栏,每个栏目用Response.Redirect()方法重定向网页。首页中有一个公告栏,栏目旁边有一个更多按钮,也通过Response.Redirect()方法重定向网页。但现在客户要求导航栏每个栏目进入时要重新打开一个窗口。我就改用Response.Write("<script >window.open('接网页地址');</script> ).
但这样做发现有问题,在导航栏点击某一个栏目,打开一个新窗口,然后关闭。再点击公告栏的更多按钮,直接进入新页面后,再按IE浏览器上的后退按钮,应该是退回首页。但问题就出在这里,退回首页的同时,也打开一个新窗口,新窗口的内容就是公告栏按更多按钮所进入的页面。不知道是什么原因???
如果首先不按导航栏的栏目,而进入公告栏,再按IE后退按钮,那正常。我想是和我改动导航栏的连接有关

8 个解决方案

#1


用超链接<a href="..." target="_top">文本</a

#2


我那些导航栏每个栏目都是按钮来的,一点击就把相关参数写入Session里面,然后重定向页面。所以用超链接方式不行。
有什么办法可以把打开一个新窗口的时候,原来窗口的IE后退没相关记录?

#3


你可以看看页面过期的问题。具体我也不太清楚。

#4


要不是你Session的问题,要不就是Page.IsPostBack的事。关注!

#5


当你使用Response.Write("<script >window.open('接网页地址');</script> ).
的时候,其实网页已经被改变了,里面加了一个无条件执行的javascript语句:

类似:
<html>
………………
<script >window.open('接网页地址');</script>
………………
</html>

很明显,只要页面刷新。就会打开新网页。

那么当你转移到新页面以后,再退回history.back()
IE会调用缓存里面的页面,也就是你写了<script >window.open('接网页地址');</script>的页面。
那么自然会打开一个新页面了。

解决办法:
1. 禁止使用IE上的回退按钮,而是自己提供回退按钮,重新从服务器上获取首页。就不会打开新窗口了。
2. 使用超链接<a href="http://www.sina.com.cn" target="_blank">文本</a>
3. 用onclick事件<SPAN onclick='window.open('接网页地址');'>文本</SPAN>
4. …………

#6


之前我用了几种方法都不行:
(1)Page.RegisterClientScriptBlock("openWindow","<script language>\rwindow.open('连接页面');\r</script>");
(2)RegisterStartupScript("openWindow","<script language>\rwindow.open('连接页面');\r</script>");
效果和Response.Write一样,跟着我只好从IE后退按钮下手,用javascript控制回退,正如楼上那位讲的第一种方法。添加多一条javascript语句:
Response.Write("<script>window.open('连接网页');window.history.back(0);</script>");
这样打开新页面的时候的同时并使原来页面IE自动后退。
楼上那位后两种方法,只适用文本连接标签把?我的是图片按钮,有点击事件。

#7


发现用打开新窗口方式会给一些IE拦截广告工具拦截,所以有缺陷,有没有方法可以再一个图片按钮下使用超链接<a href="http://www.sina.com.cn" target="_blank">文本</a>  这种方式打开新窗体?

#8


有没有办法可以再ImageButton 增加一个属性,类似HyperLink的NavigateUrl一样,我处理完ImageButton的事件后,在执行页面跳转。因为NavigateUrl可以直接http://www.sina.com.cn" target="_blank",弹出一个窗口,不会给IE拦截广告工具拦截

#1


用超链接<a href="..." target="_top">文本</a

#2


我那些导航栏每个栏目都是按钮来的,一点击就把相关参数写入Session里面,然后重定向页面。所以用超链接方式不行。
有什么办法可以把打开一个新窗口的时候,原来窗口的IE后退没相关记录?

#3


你可以看看页面过期的问题。具体我也不太清楚。

#4


要不是你Session的问题,要不就是Page.IsPostBack的事。关注!

#5


当你使用Response.Write("<script >window.open('接网页地址');</script> ).
的时候,其实网页已经被改变了,里面加了一个无条件执行的javascript语句:

类似:
<html>
………………
<script >window.open('接网页地址');</script>
………………
</html>

很明显,只要页面刷新。就会打开新网页。

那么当你转移到新页面以后,再退回history.back()
IE会调用缓存里面的页面,也就是你写了<script >window.open('接网页地址');</script>的页面。
那么自然会打开一个新页面了。

解决办法:
1. 禁止使用IE上的回退按钮,而是自己提供回退按钮,重新从服务器上获取首页。就不会打开新窗口了。
2. 使用超链接<a href="http://www.sina.com.cn" target="_blank">文本</a>
3. 用onclick事件<SPAN onclick='window.open('接网页地址');'>文本</SPAN>
4. …………

#6


之前我用了几种方法都不行:
(1)Page.RegisterClientScriptBlock("openWindow","<script language>\rwindow.open('连接页面');\r</script>");
(2)RegisterStartupScript("openWindow","<script language>\rwindow.open('连接页面');\r</script>");
效果和Response.Write一样,跟着我只好从IE后退按钮下手,用javascript控制回退,正如楼上那位讲的第一种方法。添加多一条javascript语句:
Response.Write("<script>window.open('连接网页');window.history.back(0);</script>");
这样打开新页面的时候的同时并使原来页面IE自动后退。
楼上那位后两种方法,只适用文本连接标签把?我的是图片按钮,有点击事件。

#7


发现用打开新窗口方式会给一些IE拦截广告工具拦截,所以有缺陷,有没有方法可以再一个图片按钮下使用超链接<a href="http://www.sina.com.cn" target="_blank">文本</a>  这种方式打开新窗体?

#8


有没有办法可以再ImageButton 增加一个属性,类似HyperLink的NavigateUrl一样,我处理完ImageButton的事件后,在执行页面跳转。因为NavigateUrl可以直接http://www.sina.com.cn" target="_blank",弹出一个窗口,不会给IE拦截广告工具拦截