Foros del Web » Programando para Internet » Javascript »

iexplorer e iframe dinámico

Estas en el tema de iexplorer e iframe dinámico en el foro de Javascript en Foros del Web. Hola, si creo un iframe mediante DOM y desde un form lo utilizo como target Iexplorer (almenos el 7) lo ignora y utiliza target="_blank". En ...
  #1 (permalink)  
Antiguo 10/05/2009, 18:27
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
iexplorer e iframe dinámico

Hola,

si creo un iframe mediante DOM y desde un form lo utilizo como target Iexplorer (almenos el 7) lo ignora y utiliza target="_blank". En Mozilla y Chrome funciona perfectamente.

Alguna sugerencia?

Código PHP:
function getfr(id) {
    var 
fr document.createElement("IFRAME");
    
fr.id id;
    
fr.name id;
   
document.body.appendChild(fr);
}  

<
script>getfr('mi_frame');</script>

<form name="test" target="mi_iframe" action="ejemplo.html">
  <input type=submit value=enviar>
</form> 
  #2 (permalink)  
Antiguo 10/05/2009, 19:30
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: iexplorer e iframe dinámico

fijate en tu codigo, el argumento de la funcion es 'mi_frame', pero el valor del atributo target del form es 'mi_iframe'.
  #3 (permalink)  
Antiguo 10/05/2009, 20:37
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: iexplorer e iframe dinámico

zerokilled gracias por tu atención, pero el hecho es que he escrito este código de ejemplo, el caso es que puedes comprobar que con Iexplorer los forms no reconocen como target un iframe creado dinámicamente.

He creado otro ejemplo para comprobar el funcionamiento erroneo:

Código PHP:
<script type="text/javascript">

function 
getfr(id) {
    var 
fr document.createElement("IFRAME");
    
fr.id id;
    
fr.name id;
   
document.body.appendChild(fr);
}  

getfr('mi_iframe');

</script>

            <form action="http://www.google.com" target="mi_iframe">
                <input type="submit" value="enviar">
            </form>

                        <iframe name="mi_iframe2"></iframe>

            <form action="http://www.google.com" target="mi_iframe2">
                <input type="submit" value="enviar">
            </form> 

si lo pruebas en Mozilla o Chrome, los dos forms se abren en sendos iframes, mientras que en Iexplorer sólo abre mi_iframe2 correctamente.

saludos
  #4 (permalink)  
Antiguo 10/05/2009, 21:23
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: iexplorer e iframe dinámico

si, me fije despues de haber hecho mi post. hice la prueba en msie7 y no funciono. llevo algo mas de media hora intentado una solucion y no la consigo. no estoy seguro pero pienso que el user agent enlaza los target a la vez que se va creando la estructura DOM. luego de eso no hay posibilidad de cambiarlo. o al menos eso es lo que pienso.
  #5 (permalink)  
Antiguo 10/05/2009, 23:33
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: iexplorer e iframe dinámico

decir que se soluciona si se añade esta linea en la función:

if(fr.outerHTML) fr.outerHTML = '<IFRAME name="'+id+'"></IFRAME>';

aunque fastidia a Chrome, por lo que habría que poner otra condición al if para que sólo afecte a IEplorer.

Pero es que el puñetero Iexplorer genera errores uno detrás de otro. Si generamos el iframe dinámico dentro de un DIV, la página no carga. Esto se soluciona haciendo el appendChild al DIV en lugar del BODY, pero cuando empieza a fallar cuando estamos en un DIV dentro de otro DIV, da un error parecido a que no se puede aplicar el foco a un objeto oculto o algo por el estilo, y doy fé de que no tengo ningún DIV hidden.

Madre de Dios, se hace casi imposible programar para Iexplorer.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:38.