2011-06-29 7 views
11

El código de inserción del botón de Google +1 puede tener un objeto javascript con configuración (por ejemplo, "{lang:'de'}").objeto de configuración de JavaScript de Google +1

En javascript normal, este objeto se creará y se destruirá inmediatamente, ya que no se hace referencia a nada.

Me pregunto cómo los scripts de google acceden a este objeto?

<script type="text/javascript" src="https://apis.google.com/js/plusone.js"> 
    {lang: 'de'} 
</script> 

parece que funciona - excepto cuando se escribe dinámicamente la etiqueta script que incluye el objeto de configuración en el DOM.

Respuesta

4

guión Widget funcionar a document.scripts y buscar uno con "/js/plusone.js" cadena en el atributo scr. Después de esta cadena de recorte y crear una función anónima. El resultado es un objeto con propiedades de configuración.

if (Gb[u] > 0) { 
    for (var Hb = "", Ib = 0; Ib < Gb[u]; Ib++) { 
     var Jb = Gb[Ib][nb]("src"); 
     Jb && Jb[q]("/js/plusone.js") != -1 && (Hb = Q.d.rb(Gb[Ib])); 
    } 
    Hb = Hb[Ea](/^\s+|\s+$/g, ""); 
    Hb[q]("{") != 0 && (Hb = "{" + Hb + "}"); 
    try { 
     var Kb = (new Function("return (" + Hb + "\n)"))(), Mb; 
     for (Mb in Kb) i.__GOOGLEAPIS.gwidget[Mb] = Kb[Mb]; 
    } catch (Nb) {} 
} 
+0

thx para investigar esto :) – Frunsi

7

Como la fuente de google está ofuscada, no sé cómo lo hacen. Cómo lo haría es usar JQuery para encontrar la etiqueta y luego usar .innerHTML para obtener esto como una cadena y luego usar JSON.parse para analizar el objeto de forma segura.

<script ...> 
{"lang" : "de"} 
</script> 
... 
var data= JSON.parse(
    $('script[src="https://apis.google.com/js/plusone.js"]')[0].innerHTML) 
alert(data.lang) 
+0

thx! Tenías razón, pero acepté la otra respuesta porque produjo la evidencia, aunque finalmente esperaba que la respuesta fuera diferente. Es un método un tanto extraño, pero es como es. Gracias. – Frunsi

Cuestiones relacionadas