JavaScript - Iframe en Google Chrome

   
Vista:

Iframe en Google Chrome

Publicado por REX (1 intervención) el 05/01/2010 10:30:50
Hola, buenos dias.

Llevo unos dias con este problema, y no he conseguido encontrar la solución. Yo no soy programador pero me ha tocado a mi solucionar esto.

El tema es que necesito que un iframe cargue X paginas alojadas en otro servidor.

Encontré un buen ejemplo aquí:

http://geekswithblogs.net/rashid/archive/2007/01/13/103518.aspx

y funciona correctamente en IE y Firefox.

En Opera he conseguido que funcione añadiendo un codigo HTML limpio y estructurado con su doctype.

Pero en Google Chrome no hay manera. El contenido del iframe se carga sin parar, indefinidamente.

¿Puede que sea por el window.location.hash? ¿Tiene este navegador alguna peculiaridad?

La verdad es que no tengo ni idea, dejo aqui el js por si alguien me puede echar una mano.

Le estaré agradecido siempre :)

Muchísimas gracias.

<!-- INICIO -->

var FrameManager =
{
currentFrameId : '',

currentFrameHeight : 0,

lastFrameId : '',

lastFrameHeight : 0,

resizeTimerId : null,


init : function()

{

if (FrameManager.resizeTimerId == null)

{

FrameManager.resizeTimerId = window.setInterval(FrameManager.resizeFrames, 500);

}

},


resizeFrames : function()

{

FrameManager.retrieveFrameIdAndHeight();


if ((FrameManager.currentFrameId != FrameManager.lastFrameId) ||

(FrameManager.currentFrameHeight != FrameManager.lastFrameHeight))

{

var iframe = document.getElementById(FrameManager.currentFrameId.toString());
if (iframe == null) return;
iframe.style.height = FrameManager.currentFrameHeight.toString() + "px";
FrameManager.lastFrameId = FrameManager.currentFrameId;
FrameManager.lastFrameHeight = FrameManager.currentFrameHeight;
window.location.hash = '#';
}
}
retrieveFrameIdAndHeight : function()

{
if (window.location.hash.length == 0) return;
var hashValue = window.location.hash.substring(1);
if ((hashValue == null) || (hashValue.length == 0)) return;
var pairs = hashValue.split('&');


if ((pairs != null) && (pairs.length > 0))

{

for(var i = 0; i < pairs.length; i++)

{

var pair = pairs[i].split('=');


if ((pair != null) && (pair.length > 0))

{

if (pair[0] == 'frameId')

{

if ((pair[1] != null) && (pair[1].length > 0))

{

FrameManager.currentFrameId = pair[1];

}

}

else if (pair[0] == 'height')

{

var height = parseInt(pair[1]);


if (!isNaN(height))

{

FrameManager.currentFrameHeight = height;

FrameManager.currentFrameHeight += 15;

}

}

}

}

}

},


registerFrame : function(frame)

{

var currentLocation = location.href;

var hashIndex = currentLocation.indexOf('#');


if (hashIndex > -1)

{

currentLocation = currentLocation.substring(0, hashIndex);

}


frame.contentWindow.location = frame.src + '?frameId=' + frame.id + '#' + currentLocation;

}

};

window.setTimeout(FrameManager.init, 300);

<-- FIN -->
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Iframe en Google Chrome

Publicado por Jose jlquijado@live.com (1 intervención) el 25/10/2011 10:41:48
La verdad es que yo también he experimentado dificultades con Chrome. Tengo una aplicación publicada en Internet (www.egesdoc.com) que hace un uso intensivo de llamadas a iframes, pestañas, etc. Por supuesto, todo el código JavaScript está escrito siguiendo el DOM estándar. No obstante, la apertura de distintas pestañas, que funciona perfectamente en Explorer y Firefox, por ejemplo, no lo hace en Chrome.

Es posible que este navegador no siga exactamente el modelo de objetos o tenga alguna peculiaridad específica no documentada.

Si averiguo algo más al respecto, lo comunicaré a través de este y otros foros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar