问1个没问过的问题

BearRui 2007-01-10 04:50:02
有个页面a.aspx,里面用iframe嵌入了b.aspx.

在b页面中点击按钮执行1些代码后要跳转到1个新的页面c.aspx。

注意:这里跳转到c页面是指整个页面变为c,而不只是iframe中的变化。

所以用了下面的代码:
Response.Write("<script>top.window.location.href = 'c.aspx';</script>");

这样是成功跳转了,但跳转后就出现1个问题了,在c页面点击IE的back按钮无法回退到原来的页面去了,因为back后每次都会执行top.window.location.href = 'c.aspx';

但这里很需要这个back的功能,大家有没有什么好的解决方法。不要说改用弹出窗口哦。

先谢谢大家的帮忙。
...全文
628 49 打赏 收藏 转发到动态 举报
写回复
用AI写文章
49 条回复
切换为时间正序
请发表友善的回复…
发表回复
unlimitedsaga 2007-01-11
  • 打赏
  • 举报
回复
mark
cpp2017 2007-01-11
  • 打赏
  • 举报
回复
是的用个变量就行. 其实 a.aspx的声明都可以不写. 不声明一般会报错,但用 对象.属性 就如parent.old 就不会有问题
BearRui 2007-01-11
  • 打赏
  • 举报
回复
多谢cpp2017(慕白兄)的指点,行了。其实想想,并一定要用history.目前的实现如下:

a.aspx
var old;

b.aspx
window.parent.old = 0;

b.aspx.cs
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Write("<script> if(window.parent.old != null ){top.window.location.href = 'C.aspx';}</script>");

}
cpp2017 2007-01-11
  • 打赏
  • 举报
回复
楼主再试: private void Button1_Click(object sender, System.EventArgs e) { Response.Write("<script> if( window.parent.hisLength!= null ){top.window.location.href = 'C.aspx';}</script>"); Response.End(); }
BearRui 2007-01-11
  • 打赏
  • 举报
回复
TO:cpp2017(慕白兄)

你的方法在第一次行,但点了back按钮回去再在b页面点击提交按钮的时候就不能跳转到c页面。

这个时候点击按钮提交后的window.history.length竟然=提交前的window.history.length-1
BearRui 2007-01-11
  • 打赏
  • 举报
回复
如果是这样的话,那你必须点击2次回退才能回到原来的b页面,而且c页面要加载2次!!!
BearRui 2007-01-11
  • 打赏
  • 举报
回复
TO:
你的意思是再B页面中Response.Redirect(c.aspx).

然后在c中再Response.Write("<script>windows.top.location.href =... ")???
真相重于对错 2007-01-11
  • 打赏
  • 举报
回复
在c页面想办法,
类似
c.aspx.cs

page_load(....)
{
if( 是b页面提交过来 )
Response.Write("<script>windows.top.location.href =... ")
}
BearRui 2007-01-11
  • 打赏
  • 举报
回复
TO:kaukiyou

这个有点不同,必须先提交,因为c页面要取b页面处理的结果,如果先跳转的话就取不到值了!!!
515672 2007-01-11
  • 打赏
  • 举报
回复
Response.Write("<script>top.window.location.href = 'c.aspx';</script>");

我大致能想明白你的意思,问题应该是出在这种跳转方式上了,你换种调用客户端脚本的方式,在这调用之后考虑如何返回我想是不太可能的,或者干脆具体问题具体分析换种处理思路。

kaukiyou 2007-01-10
  • 打赏
  • 举报
回复
个人觉得应该在流程上下功夫,而不是技术.
你可以在b中按按钮时跳转,同时提交你的表单.效果跟提交后写script是一样的,只不过提交成功与否不能确认.
cordyceps 2007-01-10
  • 打赏
  • 举报
回复
里面的高手确实如云.在下还在学习期间.暂时隔不久没有任何见解
Red_angelX 2007-01-10
  • 打赏
  • 举报
回复
路过下
hzsasheng 2007-01-10
  • 打赏
  • 举报
回复
hoho .讨论继续。。

还是按照上面方法,,只是要改改GoTo();这个函数,,
<script language='javascript'>
function GoTo(){
document.getElementById("url1").href="c.aspx";
document.getElementById("url1").click();
}
</script>


然后在页面加一行 <a href="#" id="url1" target="_top"></a>

执行相关程序后,在后台调用js函数GoTo() 模拟一个链接的点击事件,应该可以实现楼主的需求,只是家里没环境,大家有兴趣可以帮手试试,,

另外感谢 cpp2017(慕白兄) ,呵呵。。我测试都用的是html,所以结果有些不同,感谢提醒~~
rickjelly2004 2007-01-10
  • 打赏
  • 举报
回复
b.aspx

Response.Write("<script>top.window.location.href = 'c.aspx';</script>");
能否改成
a中加一个隐藏,b在onload时候判断是不是那个按钮点击了,是
将a中那个隐藏付一个值,a这个页面submit一下,js很容易做到
然后a提交pageload中判断,用Response.redirect

---------------------------------------------------------------------
因机器无vs,故不能测试,呵呵
ie后退对Response.redirect比较实用
cpp2017 2007-01-10
  • 打赏
  • 举报
回复
luck0235 ====== 没看懂题.
luck0235 2007-01-10
  • 打赏
  • 举报
回复
没这么复杂吧,在B中:<a href="c" target="_parent">go-->c</a>

这样再在IE中back就没问题了。
cpp2017 2007-01-10
  • 打赏
  • 举报
回复
如果你测试 Response.Write("<script>GoTo();</script>"); 就发会现有两个问题. 第一个问题:此时GoTo();不存在. 这个好解决. 第二就会出现楼主说的问题.返回时自动执行跳转又回到c.aspx了.
cpp2017 2007-01-10
  • 打赏
  • 举报
回复
这两个不是一回事. 这个<A 不会自动执行.
cpp2017 2007-01-10
  • 打赏
  • 举报
回复
TO: cpp2017(慕白兄) 我测试过了,一切正常,,没测试得东西,我一般不会发上来得,,呵呵。。 =========> 我知道你肯定测试过,不过是测试的那个 <A href="javascript:GoTo()"> </A>的
加载更多回复(28)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧