Перезагрузите iframe с помощью jQuery - PullRequest
142 голосов
/ 22 ноября 2010

У меня есть два iframe на странице, и один вносит изменения в другой, но другой iframe не показывает изменения, пока я не обновлю.Есть ли простой способ обновить этот iframe с помощью jQuery?

<div class="project">
  <iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>

Ответы [ 18 ]

224 голосов
/ 22 ноября 2010
$( '#iframe' ).attr( 'src', function ( i, val ) { return val; });
164 голосов
/ 22 ноября 2010

Если iframe не находится в другом домене, вы можете сделать что-то вроде этого:

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

Но так как iframe находится в другом домене, вам будет отказано в доступе к contentDocument iframe..

свойство *1005*. *1008*. Но вы можете хакерски принудительно перезагрузить междоменный iframe, если ваш код выполняется на родительской странице iframe, установив для него атрибут src,Например:

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

Если вы пытаетесь перезагрузить iframe из другого iframe, вам не повезло, , что - это , а не возможно.

51 голосов
/ 22 ноября 2010

Вы также можете использовать JQuery.Это то же самое, что Алекс предложил, просто используя JQuery:

 $('#currentElement').attr("src", $('#currentElement').attr("src"));
9 голосов
/ 24 марта 2012

с jquery вы можете использовать это:

$('#iframeid',window.parent.document).attr('src',$('#iframeid',window.parent.document).attr('src'));
9 голосов
/ 22 декабря 2011

Перезагрузите iframe с помощью jQuery

сделать ссылку внутри iframe, скажем с id = "reload", затем использовать следующий код

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

и вы можете использовать все браузеры.

Перезагрузить iframe с HTML (без требования Java Script)

У этого есть более простое решение: которое работает без javaScript в (FF, Webkit)

просто сделайте якорь в стороне вашего iframe

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

Когда вы нажимаете этот якорь, он просто обновляет ваш iframe

Но если у вас есть параметр send для вашего iframe, сделайте это следующим образом.

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

не нужен URL страницы, потому что -> target = "_ SELF" сделает это за вас

5 голосов
/ 22 ноября 2010

Просто отвечу взаимностью Алекса, но с помощью jQuery

var currSrc = $("#currentElement").attr("src");
$("#currentElement").attr("src", currSrc);
3 голосов
/ 25 октября 2014

Вот еще один способ

$( '#iframe' ).attr( 'src', function () { return $( this )[0].src; } );
3 голосов
/ 07 мая 2013

Я почти уверен, что все приведенные выше примеры перезагружают iframe с его исходным src, а не с текущим URL.

$('#frameId').attr('src', function () { return $(this).contents().get(0).location.href });

Это должно перезагрузить, используя текущий URL.

2 голосов
/ 23 августа 2016
$('IFRAME#currentElement').get(0).contentDocument.location.reload()
2 голосов
/ 16 января 2014

Просто отвечаю взаимностью на ответ Алекса, но с помощью jQuery:

var e = $('#myFrame');
    e.attr("src", e.attr("src"));

Или вы можете использовать небольшую функцию:

function iframeRefresh(e) {
    var c = $(e);
        c.attr("src", c.attr("src"));
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...