浏览器返回内嵌iframe,winform内嵌浏览器
vue-router内嵌iframe页面,回退异常
使用vue-router跳转的项目页面中内嵌了一个iframe,如果iframe页面内进行了跳转,用vue-router的返回,是无法回到期望的vue页面
执行vue-router的返回,回退的只是iframe导航,如果iframe里面点击了多次,使url发生变更,那么用户要点击很多次才能真正的返回。
解决方案:
window指的是当前帧,而parent指的是当前帧的父节点.
因此,在正常情况下使用窗口.在处理iframe时使用parent
如果您没有任何 iframe然后去window.history.back()
注:history.length:浏览器历史列表中的元素数量
缺陷:如果你的iframe页面也有回退事件,这种方法可能就不适用(在iframe操作回退,最新的history.length并不会减少)
不要修改 iframe.src,而是删除旧 iframe 元素,新建一个 iframe 元素并替换它,这样不会产生 history。
直接 createElement,替换原来的 iframe。
5.iframe 里面的链接用 location.replace 跳转,这样就只会有一个历史记录了
大家有更好的方案欢迎提出??
嵌入 iframe 的页面 history 流程(浏览器后退)
以下内容仅仅是个人经过测试后的猜测!!如果知道官方的定义的,请再评论区指条明路~
把 iframe 考虑成浏览器新开的 tab 页,是比较合适的~
假设页面上只嵌入了一个 iframe 元素。以下内容顶层网页用 top 表示,嵌入的 iframe 网页用 iframe 表示。
浏览器的后退按钮是面向用户的,既作用整个页面,包含 top 和 iframe 。 top 上的 history 和 iframe 上的 history 的 length 是相同的。 window.history.length === window.top.history.length 。
Chrome 的 history,不仅利用了每一步 top 和 iframe 的状态,还利用了这一步是由那个 window 引起的。点击回退只会使参与了 history 的那个 window 回到上一步该有的状态,点击前进类似。Firefox 跟 Chrome 类似。
在 Safari 上 top 和 iframe 是分开的,然后再根据 history 的形成过程进行组合。
在 Safari 上的结论就相对 Chrome 来说要简单一些,但使用 replace 后整个 history 的逻辑对用户来说可能就难以理解了(如上面例子)。测试中 top 的 page 地址都取至控制台输出 location,有可能与地址栏展示的网址不一致,见下面 存在的问题 。
iframe内嵌别人页面,点击回退按钮,页面出错
iframe内嵌别人页面,点击回退按钮,页面出错的解决方法如下:
做项目的时候发现,父页面使用iframe?内嵌页面时,比如父页面有个tab,点击不同的tab切换tab的内容,此时,每个不同的tab内容就是一个html页面。
当多次点击tab后,点击浏览器回退按钮,导致页面没有回退,回退的只是iframe的历史页面,直到回退到初始的历史iframe才能够真正的返回上一页。
此时,用的是替换iframe的src链接进行内容切换的。
针对以上问题,只需将整个iframe进行替换即可。
页面嵌套的iframe框架,为什么浏览器地址栏地址不会变
url没有变化是因为这个跳转是在服务器内部跳转的。
我简单说下浏览器的工作原理。浏览器发出一个地址请求到服务器,服务器根据这个地址找到相应的页面资料返回给浏览器,最后浏览器将信息显示给用户。
但服务器内部跳转的时候,对浏览器来说是不知道的,它只负责把服务器返回的信息显示出来。
在java web里
servlet的doGet或doPost中用response.sendRedirect("重定向的地址");
在jsp中也可以用response.sendRedirect("重定向的地址");
jsp中还可以使用特定的标签来重定向。
网页中 嵌套 iframe 优缺点
iframe是一种框架,也是一种很常见的网页嵌入方式
iframe的优点:
1.iframe能够原封不动的把嵌入的网页展现出来。
2.如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。
3.网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,可以增加代码的可重用。
4.如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决。
iframe的缺点:
1.会产生很多页面,不容易管理。
2.iframe框架结构有时会让人感到迷惑,如果框架个数多的话,可能会出现上下、左右滚动条,会分散访问者的注意力,用户体验度差。
3.代码复杂,无法被一些搜索引擎索引到,这一点很关键,现在的搜索引擎爬虫还不能很好的处理iframe中的内容,所以使用iframe会不利于搜索引擎优化。
4.很多的移动设备(PDA 手机)无法完全显示框架,设备兼容性差。
5.iframe框架页面会增加服务器的http请求,对于大型网站是不可取的。
分析了这么多,现在基本上都是用Ajax来代替iframe,所以iframe已经渐渐的退出了前端开发