Tengo una página web con un IFrame y un botón, una vez que se presiona el botón, necesito que se actualice el IFrame. ¿Es esto posible? Si es así, ¿cómo? Busqué y no pude encontrar ninguna respuesta.
Tengo una página web con un IFrame y un botón, una vez que se presiona el botón, necesito que se actualice el IFrame. ¿Es esto posible? Si es así, ¿cómo? Busqué y no pude encontrar ninguna respuesta.
Respuestas:
var iframe = document.getElementById('youriframe');
iframe.src = iframe.src;
Version 24.0.1312.56 Ubuntu 12.04 (24.0.1312.56-0ubuntu0.12.04.1)
var tmp_src = iframe.src; iframe.src = ''; iframe.src = tmp_src;
document.getElementById('frame_id').contentDocument.location.reload(true);
Esto debería ayudar:
document.getElementById('FrameID').contentWindow.location.reload(true);
EDITAR: Se corrigió el nombre del objeto según el comentario de @ Joro.
reload(true)
que utilizaría la siguiente:document.getElementById('FrameID').contentWindow.location.replace(new_url);
siempre que el iframe se cargue desde el mismo dominio, puede hacer esto, lo que tiene un poco más de sentido:
iframe.contentWindow.location.reload();
Funciona para IE, Mozzila, Chrome
document.getElementById('YOUR IFRAME').contentDocument.location.reload(true);
Puedes usar este método simple
function reloadFrame(iFrame) {
iFrame.parentNode.replaceChild(iFrame.cloneNode(), iFrame);
}
Tengo esto de aqui
var f = document.getElementById('iframe1');
f.src = f.src;
2017:
Si está en el mismo dominio, simplemente:
iframe.contentWindow.location.reload();
trabajará.
Restableciendo el atributo src directamente:
iframe.src = iframe.src;
Restableciendo el src con una marca de tiempo para la prevención de caché:
iframe.src = iframe.src.split("?")[0] + "?_=" + new Date().getTime();
Borrar el src cuando la opción de cadenas de consulta no es posible (URI de datos):
var wasSrc = iframe.src
iframe.onload = function() {
iframe.onload = undefined;
iframe.src = wasSrc;
}
Si usa rutas hash (como mywebsite.com/#/my/url) que podrían no actualizar los marcos al cambiar el hash:
<script>
window.onhashchange = function () {
window.setTimeout(function () {
let frame = document.getElementById('myFrame');
if (frame !== null) {frame.replaceWith(frame);}
}, 1000);
}
</script>
Desafortunadamente, si no usa el tiempo de espera, JS puede intentar reemplazar el marco antes de que la página haya terminado de cargar el contenido (cargando así el contenido antiguo). Todavía no estoy seguro de la solución.
Si tiene varios iFrames dentro de la página, este script puede resultarle útil. Supongo que hay un valor específico en la fuente de iFrame que se puede usar para encontrar el iFrame específico.
var iframes = document.getElementsByTagName('iframe');
var yourIframe = null
for(var i=0; i < iframes.length ;i++){
var source = iframes[i].attributes.src.nodeValue;
if(source.indexOf('/yourSorce') > -1){
yourIframe = iframes[i];
}
}
var iSource = yourIframe.attributes.src.nodeValue;
yourIframe.src = iSource;
Reemplace "/ yourSource" con el valor que necesita.
Si la URL de su iframe no cambia, puede simplemente volver a crearla.
Si su iframe no es del mismo origen (esquema de protocolo, nombre de host y puerto), no podrá conocer la URL actual en el iframe, por lo que necesitará un script en el documento iframe para intercambiar mensajes con su ventana principal ( la ventana de la página).
En el documento iframe:
window.addEventListener('change', function(e) {
if (e.data === 'Please reload yourself') {
var skipCache = true; // true === Shift+F5
window.location.reload(skipCache);
}
}
En tu pagina:
var iframe = document.getElementById('my-iframe');
var targetOrigin = iframe.src; // Use '*' if you don't care
iframe.postMessage('Please reload yourself', targetOrigin);
Puedes usar esto:
Js:
function refreshFrame(){
$('#myFrame').attr('src', "http://blablab.com?v=");
}
HTML:
`<iframe id="myFrame" src=""></iframe>`
JS Fiddle: https://jsfiddle.net/wpb20vzx/