用jQuery重新加载iframe

Mat*_*iby 146 html javascript iframe jquery

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

<div class="project">
  <iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
Run Code Online (Sandbox Code Playgroud)

Šim*_*das 230

$( '#iframe' ).attr( 'src', function ( i, val ) { return val; });
Run Code Online (Sandbox Code Playgroud)

  • 只有一个ID的引用+1,不太可能改变一个而忘记另一个 (2认同)

Ale*_*lex 168

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

document.getElementById(FrameID).contentDocument.location.reload(true);
Run Code Online (Sandbox Code Playgroud)

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

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

// hackishly force iframe to reload
var iframe = document.getElementById(FrameId);
iframe.src = iframe.src;
Run Code Online (Sandbox Code Playgroud)

如果你试图从另一个iframe重新加载iframe,那你就不走运了,是不可能的.

  • 他的问题是如何使用jQuery实现这一点 - 而不是Javascript.有关正确的jQuery答案,请参阅下面的Sime Vidas的帖子. (18认同)
  • 这对我来说不起作用,但是我做了类似`iframe.contentDocument.location = iframe.src;`而是做得很好 (3认同)
  • 这个Jquery对我来说就像一个魅力:`$('#map_iframe').attr('src',$('#map_iframe').attr('src'));` (3认同)
  • 该脚本不能**在我的IE9中工作(不检查其他版本).将*contentDocument*更改为**contentWindow**使其可以在IE9上运行.`的document.getElementById(FrameID).contentWindow.location.reload(真);` (2认同)

ynh*_*ynh 53

你也可以使用jquery.这和Alex提出的使用JQuery的方法相同:

 $('#currentElement').attr("src", $('#currentElement').attr("src"));
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案的优点是可读性.虽然没有Vidas的回答那么有效,但显而易见的是. (2认同)

小智 9

用jQuery重新加载iframe

在iframe中创建一个链接,用id ="reload"然后使用下面的代码

$('#reload').click(function() {
    document.location.reload();
});
Run Code Online (Sandbox Code Playgroud)

你很高兴与所有浏览器一起使用.

使用HTML重新加载iframe(无Java Script req.)

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

只需在你的iframe中做一个锚

   <a href="#" target="_SELF">Refresh Comments</a>
Run Code Online (Sandbox Code Playgroud)

单击此锚点时,只需刷新iframe即可

但是 如果您有参数发送到您的iframe,那么按以下方式执行.

  <a id="comnt-limit" href="?id=<?= $page_id?>" target="_SELF">Refresh Comments</a>
Run Code Online (Sandbox Code Playgroud)

不需要任何页面网址,因为 - > target ="_ SELF"为你做


eli*_*n3t 9

使用jquery你可以使用这个:

$('#iframeid',window.parent.document).attr('src',$('#iframeid',window.parent.document).attr('src'));
Run Code Online (Sandbox Code Playgroud)


Mat*_*ury 5

只是回应Alex的答案,但使用jQuery

var currSrc = $("#currentElement").attr("src");
$("#currentElement").attr("src", currSrc);
Run Code Online (Sandbox Code Playgroud)


Nas*_*ood 5

这是另一种方式

$( '#iframe' ).attr( 'src', function () { return $( this )[0].src; } );
Run Code Online (Sandbox Code Playgroud)