I have two iframes on a page and one makes changes to the other but the other iframe doesn't show the change until I refresh. Is there an easy way to refresh this iframe with jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
If you are cross-domain, simply setting the src back to the same url will not always trigger a reload, even if the location hash changes.
Ran into this problem while manually constructing Twitter button iframes, which wouldn't refresh when I updated the urls.
Twitter like buttons have the form:
.../tweet_button.html#&_version=2&count=none&etc=...
Since Twitter uses the document fragment for the url, changing the hash/fragment didn't reload the source, and the button targets didn't reflect my new ajax-loaded content.
You can append a query string parameter for force the reload (eg:
"?_=" + Math.random()
but that will waste bandwidth, especially in this example where Twitter's approach was specifically trying to enable caching.To reload something which only changes with hash tags, you need to remove the element, or change the
src
, wait for the thread to exit, then assign it back. If the page is still cached, this shouldn't require a network hit, but does trigger the frame reload.Update: Using this approach creates unwanted history items. Instead, remove and recreate the iframe element each time, which keeps this back() button working as expected. Also nice not to have the timer.
//refresh all iframes on page
cross-browser solution is:
this is useful especially when <iframe> is a the target of a <form>