我正在更改IFRAME的src
以便重新加载它,它工作得很好,并且在加载它的HTML时触发onload
事件。
但它在历史记录中添加了一个条目,这是我不想要的。有没有办法在不影响历史的情况下重新加载IFRAME?
发布于 2011-12-31 00:27:52
使用replace()只是您自己的域iframe的一个选项。它无法在远程站点上工作(例如: twitter按钮),并且需要一些特定于浏览器的知识才能可靠地访问子窗口。
相反,只需删除iframe元素并在同一位置构造一个新元素即可。只有在src
属性在DOM中之后修改它时,才会创建历史记录项,因此请确保在追加之前设置它。
编辑: JDandChips正确地提到了您可以从DOM中删除、修改和重新追加。构造fresh不是必需的。
发布于 2011-01-19 23:05:00
就像Greg上面说的,.replace()函数是如何做到这一点的。我似乎不知道如何回答他的答案*,但诀窍是引用iFrames contentWindow属性。
var ifr = document.getElementById("iframeId");
ifr.contentWindow.location.replace("newLocation.html");
*刚刚了解到,我需要更多的声誉来对答案发表评论。
发布于 2014-08-18 22:39:18
重新创建iframe的另一种方法是从DOM中删除iframe,更改src,然后重新添加它。
在许多方面,这与replace()
的建议类似,但当我尝试使用History.js和手动管理状态时,我遇到了一些问题。
var container = iframe.parent();
iframe.remove();
iframe.attr('src', 'about:blank');
container.append(iframe);
https://stackoverflow.com/questions/821359
复制相似问题