最新消息:看到那些跳动的图片、文字了吗?点击点击 O(∩_∩)O~~

记一次iframe中返回的事情

若思若想 onlyling 3653浏览

背景

一个后台系统中,使用 iframe 嵌套业务详情页面,业务详情页面有一个返回按钮,要么返回列表,要么返回工作台。

列表页进入详情页,可以使用 window.location.href = document.referrer,工作台进入的,就只有直接 window.top.location.href = '/' 的方式了。

如何判断是列表页还是工作台呢。

列表页和详情页都在 iframe 中切换,工作台是通过修改 iframescr 的方式跳转过去的。

通过查看 document.referrer ,能发现一些小规律。

最开始我以为一个 iframe 新开一个页面是没有 history 记录,后来我错了。

工作台跳转到详情的 referrer 都是当前父级窗口的地址,通过特殊标记就判断除了是哪个。

刷新的referrer与当前地址相同

在这个详情页中有加了一个打印功能,依托浏览器自身的打印功能。

简单粗暴的把需要打印的内容填充到 body 里面,避开不必要的内容,打印后刷新页面。

就这么简单的过程,referrer 却出现了问题,于是总是返回到了当前页。

用户手动 右键重新载入框架referrer 是不会变的,如果使用代码 location.reloa() 的方式,referrer 变成当前页面的链接。

目前没有找到哪个代码刷新页面的方式不改变 referrer , 只好在非工作台的返回修改成 history.back()

最后

后来发现 history.back() 完全可以做到从哪儿来回到哪儿去。

转载请注明:OnlyLing - Web 前端开发者 » 记一次iframe中返回的事情