Estoy tratando de configurar el iframe contenido de la altura a través de angular

Tengo algo así como

<iframe id='iframe' width='100%' height='600px' data-ng-init="init('iframe')" 
 src='http://test.com' />

en mi controlador

 $scope.init = function(id) {
            console.log($('#'+ id))  -> show my iframe
            var x= $('#'+ id)..contentWindow.document.body.scrollHeight;
            console.log(x) -> gives me undefined

            var y = $('#'+ id)..contentWindow;
            console.log(y) -> give me undefined too 
        }

¿Cómo puedo configurar el iframe contenido de la altura a través de mi controlador?

Gracias!

Establecer el iframe altura a 100%, y se envuelve en un div padre que el control como por cualquier método habitual (como css).
DOM manipulación debe hacerse dentro de una directiva en su lugar. Para un ejemplo crudo, consulte plnkr.co/editar/KgrhJg7xKQqxm9pho4SH?p=vista previa

OriginalEl autor FlyingCat | 2014-09-17

1 Comentario

  1. 9

    Algunas observaciones a partir de su código:

    1. ng-init no es el equivalient de $(window).on("load", function(){...}), obtener más información acerca de ng-init aquí: https://docs.angularjs.org/api/ng/directive/ngInit . Es por eso que usted está recibiendo undefined para x y y, porque cuando se ejecuta el código del iframe no se ha cargado todavía.

    2. Angular no es una buena idea para tener acceso al DOM de la controladora, considere la posibilidad de hacer ese tipo de operaciones en una directiva en su lugar.

    3. Si usted está comenzando con angularjs le recomiendo que trate de no usar jQuery.

    En tu caso creo que lo que quieres es definir una directiva como iframeSetDimentionsOnload y ajustar la altura. Voy a dar a usted en el ejemplo en un par de minutos.

    Su iframeSetDimensionsOnload directiva:

    Usarlo como este:

    por favor, eche un vistazo a mi última actualización y quiero saber si eso resuelve el problema. Gracias!
    Muchas gracias Josep
    Si trato de conseguir la altura en mi consola me sale el error: Blocked a frame with origin "http://localhost:3000" from accessing a cross-origin frame. Cuando se trata de ti con la directiva de la onload es nunca disparó, una consola.registro antes de que el detector de eventos registros.
    Me da el siguiente error: Error: Permission denied to access property "document".
    Ese error no tiene nada que ver con AngularJs o con esta pregunta. Este es un común “el mismo origen de la política” problema. ¿Tratas de google de que el error antes de asumir que este era un problema con AngularJs?

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here