首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在不添加历史的情况下重新加载IFRAME

在不添加历史的情况下重新加载IFRAME
EN

Stack Overflow用户
提问于 2009-05-04 18:45:39
回答 7查看 42.1K关注 0票数 73

我正在更改IFRAME的src以便重新加载它,它工作得很好,并且在加载它的HTML时触发onload事件。

但它在历史记录中添加了一个条目,这是我不想要的。有没有办法在不影响历史的情况下重新加载IFRAME?

EN

回答 7

Stack Overflow用户

发布于 2011-12-31 00:27:52

使用replace()只是您自己的域iframe的一个选项。它无法在远程站点上工作(例如: twitter按钮),并且需要一些特定于浏览器的知识才能可靠地访问子窗口。

相反,只需删除iframe元素并在同一位置构造一个新元素即可。只有在src属性在DOM中之后修改它时,才会创建历史记录项,因此请确保在追加之前设置它。

编辑: JDandChips正确地提到了您可以从DOM中删除、修改和重新追加。构造fresh不是必需的。

票数 77
EN

Stack Overflow用户

发布于 2011-01-19 23:05:00

就像Greg上面说的,.replace()函数是如何做到这一点的。我似乎不知道如何回答他的答案*,但诀窍是引用iFrames contentWindow属性。

代码语言:javascript
复制
var ifr = document.getElementById("iframeId");
ifr.contentWindow.location.replace("newLocation.html"); 

*刚刚了解到,我需要更多的声誉来对答案发表评论。

票数 22
EN

Stack Overflow用户

发布于 2014-08-18 22:39:18

重新创建iframe的另一种方法是从DOM中删除iframe,更改src,然后重新添加它。

在许多方面,这与replace()的建议类似,但当我尝试使用History.js和手动管理状态时,我遇到了一些问题。

代码语言:javascript
复制
var container = iframe.parent();

iframe.remove();
iframe.attr('src', 'about:blank');

container.append(iframe);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/821359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档