Foros del Web » Programando para Internet » Javascript »

Problema con IFrame autoajustable (crossdomain) en Google Chrome.

Estas en el tema de Problema con IFrame autoajustable (crossdomain) en Google Chrome. en el foro de Javascript en Foros del Web. Hola, buenas noches. Llevo unos dias con este problema, y no he conseguido encontrar la solución. Yo no soy programador pero me ha tocado a ...
  #1 (permalink)  
Antiguo 04/01/2010, 15:43
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Problema con IFrame autoajustable (crossdomain) en Google Chrome.

Hola, buenas noches.

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:
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);
Gracias de antemano nuevamente.

Última edición por spector; 04/01/2010 a las 15:49 Razón: URL mostrada incorrectamente.

Etiquetas: chrome, crossdomain, google, iframe
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




La zona horaria es GMT -6. Ahora son las 10:17.