禁止iframe记录浏览器历史

luoyjx · 2016-10-26 13:00 · 903次阅读

NTS框架中采用了新的方式记录浏览器的操作历史,因此在某些带IFRAME载入内容的项目中不希望这个IFRAME的变化影响到整个系统的操作历史,下面给出两种禁止IFRAME记录操作历史的解决方案,各有利弊视具体情况选取。

方案一

原理:利用location的replace方法载入新页面,关于replace方法的描述: When a document is replaced, it is also removed from the history object. Moreover, the user interface navigation methods, such as the Back and Forward buttons, will no longer access the URL. 分析:此方案有个前提条件就是父窗体需要有对iframe窗体的访问权限,因此此方案一般用于iframe载入的内容和父窗体是同域或者同父域的情形。 范例: case 1

第一种方案主要是通过replace来将url替换而不是push到浏览器历史中

document.getElementById('abc').contentWindow.location.replace(url);

方案二

原理:先销毁已有iframe再创建一个新的,然后通过新的iframe载入新的页面内容 分析:不存在跨域问题,但是会有iframe不断创建销毁的额外开销 范例: untitled2.png

第二种方式主要是删除iframe节点之后重新创建一个iframe元素。

iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.src = url;

11

收藏

暂无评论

登录后可以进行评论。没有账号?马上注册