2010-07-15 17 views
13

Tengo un elemento iframe con un atributo scr aleatorio. Cuando actualizo la página cada vez, el iframe debe cargar la página con diferentes parámetros de consulta basados ​​en el atributo src. Pero en Firefox, si intento cargar una URL dinámica en un iframe, siempre ejecuta la URL ejecutada por primera vez aunque el atributo src cambie dinámicamente. Los parámetros de consulta tampoco pasan correctamente. Entonces, ¿cómo puedo resolver este problema?Iframe problema de almacenamiento en memoria caché src en firefox

por ejemplo:

<?php 

$url = "http://localhost/test.php"; 

$rand_val = rand(1000, 9999); 

echo "<iframe name='dynamicload' src='{$url}?rand_val={$rand_val}'></iframe>"; 

?> 

Respuesta

4

Tuvimos el mismo problema con Firefox almacenando en caché el iframe src y deshabilitando la caché en la página original, así como la página iframe no ayudó. Ponemos el siguiente código (código de jQuery) en la función onload de iframe:

$(parent.document).find("iframe").each(function() { 
    // apply the logic only to the current iframe only 
    if(this.contentDocument == window.document) { 
     // if the href of the iframe is not same as 
     // the value of src attribute then reload it 
     if(this.src != location.href) { 
     this.src = this.src; 
     } 
    } 
}); 
+0

hey Rajiv, su solución funciona perfectamente. Gracias por la respuesta – karuh24

+0

En esta solución, la URL original siempre carga primero aunque ... – Dallin

1

Su código en PHP se ejecuta una vez y envía el contenido al navegador. Cuando actualiza la página, el código no se ejecuta nuevamente en el servidor, ya que es servido por el caché. Entonces, el src del iframe usa el mismo número aleatorio.

Para evitar esto, necesita desactivar el almacenamiento en caché de la página original (no el iframe). O podría tener el número aleatorio generado en el lado del cliente (usando javascript) para que sea único cada vez.

+0

Ya deshabilité el almacenamiento en caché tanto en el servidor como en el lado del cliente, pero no funciona. Vi el origen de la vista, la identificación aleatoria se está generando correctamente cada vez y el iframe src también está cambiando correctamente, pero el objeto $ _REQUEST no parece cambiarse. – karuh24

3

Se informa como un error de Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=279048

una solución está restableciendo el src del iframe: document.getElementById ('iframe_id'). src = 'target_url';

Todavía habrá dos solicitudes: la primera solicitud es incorrecta y se cancela inmediatamente antes de la segunda solicitud, que es correcta.

+0

hace cinco años y la falla (¿similar?) Todavía está presente en 41.0.2 ... pitty No puedo replicarlo sin datos confidenciales del cliente:/ – Buksy

+0

Casi 6 años después, y hoy actualicé a FF 48. ¡Todavía es un problema! -_- – indextwo

Cuestiones relacionadas