记一次iframe中返回的事情

4,072次阅读
没有评论

共计 616 个字符,预计需要花费 2 分钟才能阅读完成。

背景

一个后台系统中,使用 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() 完全可以做到从哪儿来回到哪儿去。

记一次 iframe 中返回的事情

正文完
 0
评论(没有评论)
验证码