Pregunta

Entonces, si estoy configurando una insignia de Yahoo Pipe en mi sitio, Yahoo me da este código

<script src="http://pipes.yahoo.com/js/listbadge.js">{"pipe_id":"USER_ID","_btype":"list"}</script>

Observe que pasa un objeto literal al script remoto. Me gustaría hacer algo similar con mis propios scripts, ¿cómo interactúas con esa entrada?

¿Fue útil?

Solución

En realidad no se pueden pasar variables de esa manera de forma nativa . Lo que Yahoo está haciendo allí es que en su archivo listbadge.js, busca a través de todas las etiquetas <script> en la página hasta que encuentra la que lo incluyó, y luego analiza el innerHTML como JSON.

Su fuente ha sido ligeramente ofuscada, pero aquí tengo mi mejor comprensión.

var scripts = document.getElementsByTagName("SCRIPT");

for (var i = 0; i < scripts.length; i++) {
    var includeString = scripts[i].src;
    if (includeString.match("listbadge.js")) {
        if (scripts[i].innerHTML){
            var passedVariables = parseJson(scripts[i].innerHTML);
        }
        break;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top