背景
一个后台系统中,使用 iframe
嵌套业务详情页面,业务详情页面有一个返回按钮,要么返回列表,要么返回工作台。
列表页进入详情页,可以使用 window.location.href = document.referrer
,工作台进入的,就只有直接 window.top.location.href = '/'
的方式了。
如何判断是列表页还是工作台呢。
列表页和详情页都在 iframe
中切换,工作台是通过修改 iframe
的 scr
的方式跳转过去的。
通过查看 document.referrer
,能发现一些小规律。
最开始我以为一个
iframe
新开一个页面是没有history
记录,后来我错了。
工作台跳转到详情的 referrer
都是当前父级窗口的地址,通过特殊标记就判断除了是哪个。
刷新的referrer与当前地址相同
在这个详情页中有加了一个打印功能,依托浏览器自身的打印功能。
简单粗暴的把需要打印的内容填充到 body
里面,避开不必要的内容,打印后刷新页面。
就这么简单的过程,referrer
却出现了问题,于是总是返回到了当前页。
用户手动 右键重新载入框架
,referrer
是不会变的,如果使用代码 location.reloa()
的方式,referrer
变成当前页面的链接。
目前没有找到哪个代码刷新页面的方式不改变 referrer
, 只好在非工作台的返回修改成 history.back()
。
最后
后来发现 history.back()
完全可以做到从哪儿来回到哪儿去。
转载请注明:OnlyLing - Web 前端开发者 » 记一次iframe中返回的事情