Me gustaría volver a cargar un <iframe>
usando JavaScript. La mejor manera que encontré hasta ahora fue establecer el src
atributo del iframe para sí mismo, pero esto no es muy limpio. ¿Algunas ideas?
javascript
iframe
caffo
fuente
fuente
src
atributo en sí mismo no está limpio? Parece ser la única solución que funciona en todos los navegadores y dominiossrc
atributo en sí mismo causa problemas si tiene un enlace en otro lugar que apunta al<iframe>
. Luego, el marco mostrará la página inicial como se diseñó originalmente.Respuestas:
tenga cuidado, en Firefox,
window.frames[]
no se puede indexar por id, sino por nombre o índicefuente
frames[1].location.href.reload()
ywindow.frames['some_frame_id'].location.href.reload()
también se puede usar¡Recargará el
iframe
, incluso a través de dominios! Probado con IE7 / 8, Firefox y Chrome.fuente
document.getElementById('iframeid').src += '';
también funciona: jsfiddle.net/Daniel_Hug/dWm5kreload
pero esto está permitido.http://example.com/#something
. Ej. ), Esto no volverá a cargar el marco. He utilizado el enfoque de agregar un parámetro de consulta desechable como?v2
a la URL antes del hash.Si usa jQuery, esto parece funcionar:
Espero que no sea demasiado feo para stackoverflow.
fuente
var iframe = document.getElementById("your_iframe"); iframe.src = src;
var iframe = document.getElementById("your_iframe"); iframe.src = iframe.src;
Agregar espacio vacío también recarga el iFrame automáticamente.
fuente
fuente
Debido a la misma política de origen , esto no funcionará al modificar un iframe que apunta a un dominio diferente. Si puede apuntar a navegadores más nuevos, considere usar la mensajería de documentos cruzados de HTML5 . Puede ver los navegadores que admiten esta función aquí: http://caniuse.com/#feat=x-doc-messaging .
Si no puede utilizar la funcionalidad HTML5, puede seguir los trucos descritos aquí: http://softwareas.com/cross-domain-communication-with-iframes . Esa entrada de blog también hace un buen trabajo al definir el problema.
fuente
Acabo de encontrarme con esto en Chrome y lo único que funcionó fue eliminar y reemplazar el iframe. Ejemplo:
Bastante simple, no cubierto en las otras respuestas.
fuente
para nueva url
El método asignar () carga un nuevo documento.
recargar
El método reload () se usa para recargar el documento actual.
fuente
Simplemente reemplazar el
src
atributo del elemento iframe no fue satisfactorio en mi caso porque uno vería el contenido anterior hasta que se cargue la nueva página. Esto funciona mejor si desea dar retroalimentación visual instantánea:fuente
Un refinamiento en la publicación de yajra ... Me gusta la idea, pero odio la idea de la detección del navegador.
Prefiero la opinión de ppk de usar la detección de objetos en lugar de la detección del navegador ( http://www.quirksmode.org/js/support.html ), porque en realidad estás probando las capacidades del navegador y actuando en consecuencia, en lugar de de lo que crees que es capaz el navegador en ese momento. Tampoco requiere tanto análisis de cadenas de ID de navegador feo y no excluye navegadores perfectamente capaces de los que no se sabe nada.
Entonces, en lugar de mirar navigator.AppName, ¿por qué no hacer algo como esto, en realidad probar los elementos que usa? (Puedes usar los bloques try {} si quieres ponerte aún más elegante, pero esto funcionó para mí).
De esta manera, puede probar tantas permutaciones diferentes como desee o sea necesario, sin causar errores de JavaScript, y hacer algo sensato si todo lo demás falla. Es un poco más de trabajo probar sus objetos antes de usarlos, pero, en mi opinión, hace un código mejor y más seguro.
Me funcionó en IE8, Firefox (15.0.1), Chrome (21.0.1180.89 m) y Opera (12.0.2) en Windows.
Tal vez podría hacerlo aún mejor probando realmente la función de recarga, pero eso es suficiente para mí en este momento. :)
fuente
Ahora para que esto funcione en Chrome 66, intente esto:
fuente
En IE8 usando .Net, configurar
iframe.src
por primera vez está bien, pero configurarloiframe.src
por segunda vez no aumenta lapage_load
página de iframed. Para resolverlo yo solíaiframe.contentDocument.location.href = "NewUrl.htm"
.Descúbralo cuando use jQuery thickBox e intente volver a abrir la misma página en el iframe de thickbox. Luego, solo mostró la página anterior que se abrió.
fuente
Use reload para IE y configure src para otros navegadores. (recargar no funciona en FF) probado en IE 7,8,9 y Firefox
fuente
Si usa Jquery, entonces hay un código de línea.
y si estás trabajando con el mismo padre
fuente
Si todo lo anterior no funciona para usted:
Esto, por alguna razón, actualizó mi iframe en lugar de todo el script. ¿Tal vez porque se coloca en el marco en sí, mientras que todas esas soluciones getElemntById funcionan cuando intenta actualizar un marco desde otro marco?
O no entiendo esto completamente y hablo galimatías, de todos modos esto funcionó para mí como un encanto :)
fuente
¿Ha considerado agregar a la url un parámetro de cadena de consulta sin sentido?
No se verá y si sabe que el parámetro es seguro, entonces debería estar bien.
fuente
Otra solución.
fuente
var url = ifr.src; ifr.src = null; ifr.src = url;
El uso
self.location.reload()
volverá a cargar el iframe.fuente
fuente
Si probaste todas las otras sugerencias y no pudiste hacer que ninguna de ellas funcionara (como yo no pude), aquí hay algo que puedes probar que puede ser útil.
HTML
JS
Inicialmente me propuse intentar ahorrar algo de tiempo con RWD y pruebas de navegador cruzado. Quería crear una página rápida que albergara un montón de iframes, organizados en grupos que mostraría / ocultaría a voluntad. Lógicamente, desearía poder actualizar fácil y rápidamente cualquier marco dado.
Debo señalar que el proyecto en el que estoy trabajando actualmente, el que se usa en este banco de pruebas, es un sitio de una página con ubicaciones indexadas (por ejemplo, index.html # home). Eso puede haber tenido algo que ver con por qué no pude obtener ninguna de las otras soluciones para actualizar mi marco particular.
Dicho esto, sé que no es la cosa más limpia del mundo, pero funciona para mis propósitos. Espero que esto ayude a alguien. Ahora, si solo pudiera descubrir cómo evitar que el iframe se desplace por la página principal cada vez que hay animación dentro del iframe ...
EDITAR: Me di cuenta de que esto no "actualiza" el iframe como esperaba. Sin embargo, volverá a cargar la fuente inicial del iframe. Todavía no puedo entender por qué no pude hacer funcionar ninguna de las otras opciones ...
ACTUALIZACIÓN: La razón por la que no pude hacer funcionar ninguno de los otros métodos es porque los estaba probando en Chrome, y Chrome no le permitirá acceder al contenido de un iframe (Explicación: ¿Es probable que las futuras versiones de Chrome admitan contentWindow? / contentDocument cuando iFrame carga un archivo html local desde un archivo html local? ) si no se origina en la misma ubicación (por lo que yo entiendo). Luego de más pruebas, tampoco puedo acceder a contentWindow en FF.
JS MODIFICADO
fuente
Para fines de depuración, uno podría abrir la consola, cambiar el contexto de ejecución al marco que desea actualizar y hacer
document.location.reload()
fuente