重新加载/刷新 iframe 的最佳方法是什么?

IT技术 javascript iframe
2021-01-19 02:31:16

我想重新加载一个<iframe>使用 JavaScript。到目前为止,我发现的最好方法是将 iframe 的src属性设置为自身,但这不是很干净。有任何想法吗?

6个回答
document.getElementById('some_frame_id').contentWindow.location.reload();

注意,在 Firefox 中,window.frames[]不能按 id 索引,而是按名称或索引

绝对可行,但坚持使用相同的域来源策略 ==a
2021-03-13 02:31:16
@MikeBevz 可以使用 Jquery 选择器访问 location.reload 吗?
2021-03-16 02:31:16
frames[1].location.href.reload()并且window.frames['some_frame_id'].location.href.reload()也可以使用
2021-03-24 02:31:16
如果您无法访问 iframe 窗口,则必须更改 iframe 标记的 src 属性。
2021-03-27 02:31:16
实际上,这种方法在 Chrome 中对我不起作用。没有“contentWindow”属性。虽然可以使用 document.getElementById('some_frame_id').location.reload(); 适用于 FF 和 Chrome 的方法是 document.getElementById('iframeid').src = document.getElementById('iframeid').src
2021-03-28 02:31:16
document.getElementById('iframeid').src = document.getElementById('iframeid').src

它会重新加载iframe,甚至跨域!使用 IE7/8、Firefox 和 Chrome 进行测试。

请注意,如果 iframe src 中有散列(例如http://example.com/#something),则不会重新加载框架。我使用了?v2在散列之前向 URL添加一次性查询参数的方法
2021-03-19 02:31:16
document.getElementById('iframeid').src += '';也适用:jsfiddle.net/Daniel_Hug/dWm5k
2021-03-23 02:31:16
在 Chrome ver33 上对我有用!奇怪的是,我们不能简单地使用,reload但这是允许的。
2021-03-25 02:31:16
如果 iframe 的源自添加到页面后发生了更改,您究竟会怎么做
2021-04-03 02:31:16
这会导致 iframe 滚动回顶部。
2021-04-03 02:31:16

如果使用 jQuery,这似乎有效:

$('#your_iframe').attr('src', $('#your_iframe').attr('src'));
这个,没有 jQuery: var iframe = document.getElementById("your_iframe"); iframe.src = src;
2021-04-03 02:31:16
请注意任何未来的人,这个(和普通的 js 解决方案)是最好的使用,因为它是跨平台的,并且可以跨域工作。
2021-04-08 02:31:16
@Seagrass 我想你的意思是: var iframe = document.getElementById("your_iframe"); iframe.src = iframe.src;
2021-04-10 02:31:16

添加空白空间也会自动重新加载 iFrame。

document.getElementById('id').src += '';
但后者不会滚动到顶部,因此这取决于您的优先级。
2021-03-20 02:31:16
这是最好的答案,因为它适用于所有 iframe,包括跨域 iframe。相比之下,该contentWindow.location.reload()方法仅适用于来自同一来源的 iframe。
2021-04-01 02:31:16
window.frames['frameNameOrIndex'].location.reload();