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 de hecho funciona correctamente en IE y Firefox.
En Opera he conseguido que funcionara añadiendo un codigo HTML limpio y estructurado con su DTD, etc.
Pero en Google Chrome no hay manera. El contenido del iframe se carga sin parar, indefinidamente.
¿Puede que sea por el window.location.hash? La verdad es que no tengo ni idea, dejo aqui el js por si alguien me puede echar una mano.
Le estaré agradecido siempre :)
Código:
Gracias de antemano nuevamente. 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);