使用 jQuery 重新加载 iframe

IT技术 javascript jquery html iframe
2021-01-30 08:10:13

我在一个页面上有两个 iframe,一个对另一个进行了更改,但另一个 iframe 在我刷新之前不会显示更改。有没有一种简单的方法可以用 jQuery 刷新这个 iframe?

<div class="project">
  <iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
6个回答
$( '#iframe' ).attr( 'src', function ( i, val ) { return val; });
+1 因为只有一个 ID 引用,不太可能更改一个而忘记另一个
2021-03-23 08:10:13
要从另一个更改中重新加载一个 iframe: $('#iframe', window.parent.document).attr('src', function (i, val ) { return val; });
2021-03-24 08:10:13
@NicolaeSurdu 另外,这个: (function (elem) { elem.src = elem.src; }($('#iframe')[0]));
2021-03-29 08:10:13
在 Internet Explorer 上,javascript 解决方案document.getElementById(FrameID).contentWindow.location.reload(true);无法正常工作。这个答案效果更好。
2021-04-01 08:10:13

如果 iframe 不在不同的域中,您可以执行以下操作:

document.getElementById(FrameID).contentDocument.location.reload(true);

但是由于 iframe 位于不同的域中,因此同源策略将拒绝您访问 iframe 的contentDocument属性

但是,如果您的代码在 iframe 的父页面上运行,您可以通过将其 src 属性设置为自身来强制重新加载跨域 iframe。像这样:

// hackishly force iframe to reload
var iframe = document.getElementById(FrameId);
iframe.src = iframe.src;

如果您尝试从另一个 iframe 重新加载 iframe,那您就不走运了,不可能的。

该脚本并没有在我的工作,IE9(不检查其他版本)。contentDocument更改contentWindow使其在 IE9 上工作。document.getElementById(FrameID).contentWindow.location.reload(true);
2021-03-16 08:10:13
他的问题是如何使用 jQuery 而不是 Javascript 来实现这一点。有关正确的 jQuery 答案,请参阅下面的 Sime Vidas 帖子。
2021-03-18 08:10:13
这个 Jquery 对我来说就像一个魅力: $('#map_iframe').attr('src', $('#map_iframe').attr('src'));
2021-03-20 08:10:13
这对我不起作用,但是我做了类似的事情,但 iframe.contentDocument.location=iframe.src; 效果很好
2021-04-11 08:10:13

你也可以使用jquery。这与 Alex 仅使用 JQuery 提出的建议相同:

 $('#currentElement').attr("src", $('#currentElement').attr("src"));
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' )) 维护和阅读可能更健壮
2021-03-29 08:10:13
我同意,我也倾向于更喜欢这个解决方案的可读性
2021-03-31 08:10:13
此解决方案的优点是可读性。虽然不如 Vidas 的回答那么有效,但很明显正在发生的事情。
2021-04-07 08:10:13

使用 jQuery 重新加载 iframe

在 iframe 内创建一个链接,让我们说 id = "reload" 然后使用以下代码

$('#reload').click(function() {
    document.location.reload();
});

并且您可以使用所有浏览器。

使用 HTML 重新加载 iframe(无 Java Script 要求)

它有更简单的解决方案:在(FF,Webkit)中没有javaScript的情况下工作

只需在您的 iframe 内制作一个锚点

   <a href="#" target="_SELF">Refresh Comments</a>

当您单击此锚点时,它只会刷新您的 iframe

但是, 如果您将参数发送到您的 iframe,请按以下方式操作。

  <a id="comnt-limit" href="?id=<?= $page_id?>" target="_SELF">Refresh Comments</a>

不需要任何页面 url 因为 -> target="_SELF" 为你做

使用 jquery,你可以使用这个:

$('#iframeid',window.parent.document).attr('src',$('#iframeid',window.parent.document).attr('src'));
如果您想刷新当前的 iframe(我们所在的位置),请使用此解决方案。多谢!
2021-04-10 08:10:13