У меня есть два iframe на странице, и один вносит изменения в другой, но другой iframe не показывает изменения, пока я не обновлю. Есть ли простой способ обновить этот iframe с помощью jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
javascript
jquery
html
iframe
Мэтт Элхотиби
источник
источник
Ответы:
Если iframe не находится в другом домене, вы можете сделать что-то вроде этого:
Но поскольку iframe находится в другом домене, вам будет отказано в доступе к
contentDocument
свойству iframe в соответствии с политикой того же происхождения .Но вы можете принудительно перезагрузить междоменный iframe, если ваш код выполняется на родительской странице iframe, установив для него атрибут src. Как это:
Если вы пытаетесь перезагрузить IFRAME из другого фрейма, вы не повезло, что это не возможно.
источник
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
этого, который работал отлично$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
источник
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
document.getElementById(FrameID).contentWindow.location.reload(true);
не работают должным образом. Этот ответ работает лучше.Вы также можете использовать JQuery. Это то же самое, что Алекс предложил, просто используя JQuery:
источник
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' ))
может быть более надежным в обслуживании и чтенииПерезагрузите iframe с помощью jQuery
сделать ссылку внутри iframe, скажем с id = "reload", затем использовать следующий код
и вам хорошо идти со всеми браузерами.
Перезагрузите iframe с помощью HTML (без требования Java Script)
У этого есть более простое решение: которое работает без javaScript в (FF, Webkit)
просто сделайте якорь внутри своей рамки
Когда вы нажимаете этот якорь, он просто обновляет ваш фрейм
Но если у вас есть параметр send для вашего iframe, сделайте это следующим образом.
не нужно URL страницы, потому что -> target = "_ SELF" сделает это за вас
источник
с помощью jquery вы можете использовать это:
источник
Просто отвечу взаимностью Алекса, но с помощью jQuery
источник
Вот еще один способ
источник
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Я почти уверен, что все приведенные выше примеры только перезагружают iframe с его исходным src, а не с его текущим URL.
Это должно перезагрузить, используя текущий URL.
источник
Если вы работаете с несколькими доменами, простая установка src на тот же URL-адрес не всегда вызывает перезагрузку, даже если хэш местоположения изменяется.
Столкнулся с этой проблемой при ручном построении фреймов кнопки Twitter, которые не обновлялись, когда я обновлял URL.
Кнопки, похожие на Twitter, имеют вид:
.../tweet_button.html#&_version=2&count=none&etc=...
Так как Twitter использует фрагмент документа для URL, изменение хеша / фрагмента не перезагружало источник, и целевые кнопки не отражали мой новый загруженный ajax контент.
Вы можете добавить параметр строки запроса для принудительной перезагрузки (например,
"?_=" + Math.random()
но это приведет к потере пропускной способности, особенно в этом примере, где подход Twitter специально пытался включить кэширование.Чтобы перезагрузить что-то, что изменяется только с помощью хеш-тегов, вам нужно удалить элемент или изменить
src
, дождаться завершения потока, а затем назначить его обратно. Если страница все еще кэшируется, это не должно требовать попадания в сеть, но вызывает перезагрузку кадра.Обновление : использование этого подхода создает нежелательные элементы истории. Вместо этого каждый раз удаляйте и воссоздайте элемент iframe, благодаря чему эта кнопка назад () работает должным образом. Также приятно не иметь таймера.
источник
Просто отвечу взаимностью Алекса, но с помощью jQuery:
Или вы можете использовать небольшую функцию:
Я надеюсь, что это помогает.
источник
источник
Это возможно с простым JavaScript.
window.frames
синтаксис для запуска функции JavaScript в iframe2. Просто убедитесь, что вы используетеid
/name
из iframe2, а неsrc
.источник
// обновить все фреймы на странице
источник
Кросс-браузерное решение это:
это полезно, особенно когда <iframe> является целью <form>
источник
РЕШИТЬ! Я регистрируюсь в stockoverflow, чтобы поделиться с вами единственным решением (по крайней мере, в ASP.NET/IE/FF/Chrome), которое работает! Идея состоит в том, чтобы заменить значение innerHTML элемента div его текущим значением innerHTML.
Вот фрагмент кода HTML:
И мой код Javascript:
Надеюсь это поможет.
источник
runat="server"
не применяется; 2. Почему все заглавные буквы дляIFRAME
? 3. значения атрибута измерения не имеют единиц измерения; 4.frameborder
устарелВам нужно использовать
Чтобы найти источник iframe и его URL-адрес должен находиться в одном домене родительского элемента.
источник
ты можешь сделать это так
источник
Ниже решение будет работать наверняка:
источник