火狐中很奇怪的history.go(-n)的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了火狐中很奇怪的history.go(-n)的问题相关的知识,希望对你有一定的参考价值。
我主页面 index.html 内嵌了很多(n)个iframe
每个iframe 通过选项卡的方式进行了显示与隐藏
当我操作iframeA时,比如我有个编辑按钮,点编辑在当前iframe转向另外一个地址,然后另外这个地址有一个回退的按钮,当点击回退按钮时:使用history.go(-1)的功能,退回到iframe原来的页面,这个功能是没有问题的。
问题:现在操作人员首先操作 iframeA进入到了编辑页面,此时并没有点回退。现在又转到另外一个选项卡操作了iframeB,iframeB同样也转向了编辑页面。这个时候再切换到iframeA来点击返回时,问题就出现了,其实是iframeB进行了返回,而不是iframeA。 这个问题很大了.... (这个问题希望解答下)
但是我也另辟蹊径找到了一个解决方案:我在每个页面记录了转向这个页面时的history.length 在返回的时候我直接 history.go(-记录的值)。这个方法在IE中是没有问题的,但是在火狐里却还是有问题,
比如场景还是如上面所说的,返回的效果是 iframeA与iframeB同时返回到了它的上一个页面,我现在的理解就是火狐与谷歌中的history(-n)的操作,并不是将iframe的url 返回到-n的历史记录上,而是让最后操作的n个iframe 返回到了-1的状态...(这个问题希望也能得到解答)
如果有一种解决方案无限感谢啊。。。。。。。
因为iframe 中镶嵌的是一个个网页实例,您在一个页面镶入多个iframe时,其效果相当于将多个页面放在一起展示,而您这时候执行history.go(-1),根据该事件的载体位置不同,其作用域是不同的。在父框架下,就是全局有效,在子页面下就是本页面有效。
至于解决方案,第一、在ajax框架如此发达的当今,还在一个功能页面镶嵌那么多iframe本就不妥,还牵涉到了跨域问题,以后尽量避免;第二、在不想对现有结构大改的情况下,用记录reffer的方式,直接访问上一次的地址,达到回退的效果,但是此模式下在从缓存还是现网实际获取存在差别。此法是重新发起访问请求,之前的方式实际是去取缓存。
如果对我们的回答存在任何疑问,欢迎继续问询。追问
用其它的方式我这里暂时还没考虑,主要就是问iframe.history.go(-n)的问题。
我就想了解 能不能单独的针对iframe 回退 ,另外 go(-n)时的实际作用,到底是回退到n的记录,还是最后操作的n个iframe 回退(-1)
那个back即是回退到n的记录,也是回退所操作的当前页面的记录,主要看它所做用的域。请参看我上一段说明。
追问.....大师兄,其实我就是想知道iframe 如何单独的后退。
追答单独的后退就是我说的,不要跨框架操作,不然界面元素也没法确切地知道您是要操作哪一个,是不。
参考技术A 不大明白你的意思,一般能给下切换的js源码吗?追答去掉"一般"两个字。。。。
追问你说选项卡切换吗 ?选项卡就是几个div 然后对应了下面包含了一个iframe。
追答你的意思是A点返回,结果B也返回了?
追问是的。 用-n的方式 a b c d....的iframe都同时回退了。测试的结果就是 最后操作的n个iframe 产生了回退
先操作iframeA 还没有点返回。
然后操作了iframeB
然后操作了iframeC
那点击iframeA 用window.history.go(-3)的方式,iframeA,iframeB,iframeC都同时返回了-1 .
-n??这是什么意思,一般用js实现网页动态
history.back(-1)和history.go(-1)的区别
history.back(-1):直接返回当前页的上一页,数据全部消息,是个新页面
history.go(-1):也是返回当前页的上一页,不过表单里的数据全部还在
history.back(0) 刷新 history.back(1) 前进 history.back(-1) 后退
以上是关于火狐中很奇怪的history.go(-n)的问题的主要内容,如果未能解决你的问题,请参考以下文章