Tengo dos iframes en una página y uno realiza cambios en el otro, pero el otro iframe no muestra el cambio hasta que me actualizo. ¿Hay una manera fácil de actualizar este iframe con jQuery?
<div class="project">
<iframe id="currentElement" class="myframe" name="myframe" src="http://somesite.com/something/new"></iframe>
</div>
javascript
jquery
html
iframe
Matt Elhotiby
fuente
fuente
Respuestas:
Si el iframe no estaba en un dominio diferente, podría hacer algo como esto:
Pero dado que el iframe está en un dominio diferente, se le negará el acceso al iframe
contentDocument
política del mismo origen propiedad .Pero puede forzar hackear el iframe entre dominios para que se vuelva a cargar si su código se está ejecutando en la página principal del iframe, estableciendo su atributo src en sí mismo. Me gusta esto:
Si está intentando recargar el iframe desde otro iframe, no tiene suerte, eso no es posible.
fuente
document.getElementById(FrameID).contentWindow.location.reload(true);
iframe.contentDocument.location=iframe.src;
que funcionó muy bien$('#map_iframe').attr('src', $('#map_iframe').attr('src'));
fuente
(function (elem) { elem.src = elem.src; }($('#iframe')[0]));
document.getElementById(FrameID).contentWindow.location.reload(true);
no funcionan correctamente. Esta respuesta funciona mejor.También puedes usar jquery. Esto es lo mismo que Alex propuso simplemente usando JQuery:
fuente
var f = $('#iframeX') ; f.attr( 'src', f.attr( 'src' ))
puede ser más robusto para mantener y leerRecargue un iframe con jQuery
haga un enlace dentro del iframe, digamos con id = "reload" y luego use el siguiente código
y eres bueno para ir con todos los navegadores.
Recargue un iframe con HTML (no se requiere Java Script)
Tiene una solución más simple: que funciona sin javaScript en (FF, Webkit)
solo haga un ancla dentro de su iframe
Cuando haces clic en este ancla, simplemente actualiza tu iframe
Pero si tiene envío de parámetros a su iframe, hágalo de la siguiente manera.
no necesita ninguna URL de la página porque -> target = "_ SELF" lo hace por usted
fuente
con jquery puedes usar esto:
fuente
Recíprocamente la respuesta de Alex pero con jQuery
fuente
Aquí hay otra manera
fuente
$( '#iframe' ).attr('src', $( '#iframe' ).attr('src'));
Estoy bastante seguro de que todos los ejemplos anteriores solo vuelven a cargar el iframe con su src original, no con su URL actual.
Eso debería recargar usando la url actual.
fuente
Si tiene un dominio cruzado, simplemente establecer el src nuevamente en la misma URL no siempre activará una recarga, incluso si cambia el hash de ubicación.
Encontré este problema al construir manualmente iframes de botones de Twitter, que no se actualizarían cuando actualizara las URL.
Los botones Me gusta de Twitter tienen la forma:
.../tweet_button.html#&_version=2&count=none&etc=...
Como Twitter usa el fragmento de documento para la url, cambiar el hash / fragmento no volvió a cargar la fuente, y los objetivos de los botones no reflejaron mi nuevo contenido cargado de ajax.
Puede agregar un parámetro de cadena de consulta para forzar la recarga (por ejemplo:
"?_=" + Math.random()
pero eso desperdiciará el ancho de banda, especialmente en este ejemplo donde el enfoque de Twitter estaba tratando específicamente de habilitar el almacenamiento en caché.Para volver a cargar algo que solo cambia con etiquetas hash, debe eliminar el elemento o cambiarlo
src
, esperar a que salga el hilo y luego asignarlo de nuevo. Si la página todavía está en caché, esto no debería requerir una visita a la red, pero sí activa la recarga del marco.Actualización : el uso de este enfoque crea elementos de historial no deseados. En su lugar, elimine y vuelva a crear el elemento iframe cada vez, lo que mantiene este botón de retroceso () funcionando como se esperaba. También es bueno no tener el temporizador.
fuente
Solo correspondiendo la respuesta de Alex pero con jQuery:
O puede usar una función pequeña:
Espero que ayude.
fuente
fuente
Esto es posible con JavaScript simple.
window.frames
sintaxis para activar una función de JavaScript en iframe2. Solo asegúrese de usar elid
/name
de iframe2 y no elsrc
.fuente
// actualiza todos los iframes en la página
fuente
La solución de navegador cruzado es:
Esto es útil especialmente cuando <iframe> es el objetivo de un <form>
fuente
¡RESUELTO! ¡Me registro en stockoverflow solo para compartir con ustedes la única solución (al menos en ASP.NET/IE/FF/Chrome) que funciona! La idea es reemplazar el valor innerHTML de un div por su valor innerHTML actual.
Aquí está el fragmento de HTML:
Y mi código Javascript:
Espero que esto ayude.
fuente
runat="server"
lo tanto, no es aplicable; 2. ¿Por qué todas las gorrasIFRAME
? 3. los valores de atributo de dimensión no tienen unidades; 4.frameborder
está en desusoNecesitas usar
para encontrar la fuente del iframe y su URL debe estar en el mismo dominio del padre.
fuente
puedes hacerlo asi
fuente
La siguiente solución funcionará con seguridad:
fuente