none
No se puede agregar contenido dinámico (javascript) RRS feed

  • Pregunta

  • Buentas tardes.

    He hecho mi primera app para windows 8 usando el visual studio.

    Lo más sencillo era implementar en un iframe una página web.

    Esta página web objetivo tiene un "widget" de Twitter y al ejecutar la aplicación me salta una excepción:

     Error en tiempo de ejecución de JavaScript: No se puede agregar contenido dinámico. Un script intentó inyectar contenido dinámico, o elementos anteriormente modificados dinámicamente, que probablemente no sea seguro. Por ejemplo, el uso de la propiedad innerHTML para agregar un script o HTML con un formato incorrecto generará esta excepción. Recurra al método toStaticHTML para filtrar el contenido dinámico o cree elementos y atributos expresamente con un método como createElement.

    Supongo que si quiero hacer que funcione tendré que seguir el consejo de "createElement", pero no se exactamente en que consiste.

    ¿Alguna idea para que el widget se ejecute correctamente?

    Gracias

    sábado, 26 de enero de 2013 20:35

Respuestas

  • Nadie responde.

    Al final como no conseguía arreglarlo de ninguna manera (maldita validación) busqué interactuar directamente con la API de twitter en lugar de dejar que twitter cree por mi los contenedores correspondientes para mostrar su widget que es lo que daba problemas de contenido dinámico (appendChild, createElement, etc)

    Usé el método descrito en esta página que incluye ficheros de ejemplo:

    http://tweet.seaofclouds.com/

    Finalmente agregar que aquellos que quieran usar funciones del tipo que he descrito antes, pueden usar una librería de jQuery adaptada a aplicaciones Windows 8 que consigue lidiar con validaciones e incompatibilidades.

    https://github.com/appendto/jquery-win8

    • Marcado como respuesta chipi92 martes, 29 de enero de 2013 0:34
    martes, 29 de enero de 2013 0:33

Todas las respuestas

  • cuando dices aplciacion en Win 8 te refieres a una aplciacion Modern UI, o sea Metro ?

    estas usando winJS para el desarrollo?

    en que codigo o accion marca el problema


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 26 de enero de 2013 22:38
  • Exacto, aplicación Metro.

    winJS ha sido agregado solo en el proyecto por Visual Studio y el problema salta al cargar la página. Me señala el código del archivo "widgets.js" propiedad de twitter donde agrega ese "contenido dinámico".

    domingo, 27 de enero de 2013 14:39
  • He seguido investigando.

    Lo siguiente funciona en un navegador pero no en la app metro:

    <a class="twitter-timeline" href="https://twitter.com/xxx" data-widget-id="xxx">Tweets por @xxx</a>
    
    <div id="capa" style="padding: 10px; background-color: #ff8800">Haz clic en un botón</div>
    
    <script id="twitter-wjs">   
    
    MSApp.execUnsafeLocalFunction(function() {
    $.getScript("//platform.twitter.com/widgets.js", 
    function() {            $('#capa').html('Se ha cargado la libreria correctamente<b>A</b>')        
    });    
    });
    </script>

    MSApp.execUnsafeLocalFunction es para saltarse la validación de código.


    • Editado chipi92 domingo, 27 de enero de 2013 16:01
    domingo, 27 de enero de 2013 16:00
  • Nadie responde.

    Al final como no conseguía arreglarlo de ninguna manera (maldita validación) busqué interactuar directamente con la API de twitter en lugar de dejar que twitter cree por mi los contenedores correspondientes para mostrar su widget que es lo que daba problemas de contenido dinámico (appendChild, createElement, etc)

    Usé el método descrito en esta página que incluye ficheros de ejemplo:

    http://tweet.seaofclouds.com/

    Finalmente agregar que aquellos que quieran usar funciones del tipo que he descrito antes, pueden usar una librería de jQuery adaptada a aplicaciones Windows 8 que consigue lidiar con validaciones e incompatibilidades.

    https://github.com/appendto/jquery-win8

    • Marcado como respuesta chipi92 martes, 29 de enero de 2013 0:34
    martes, 29 de enero de 2013 0:33