2011-06-29 10 views
11

Kod osadzania przycisku google +1 może zawierać obiekt javascript z konfiguracją (np. "{lang:'de'}").Obiekt konfiguracyjny javascript google +1

W prostym javascript, ten obiekt zostanie utworzony i natychmiast zniszczony, ponieważ nie ma do niego odniesienia.

Zastanawiam się, w jaki sposób skrypty google uzyskują dostęp do tego obiektu?

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

Wydaje się do pracy - z wyjątkiem, gdy dynamicznie napisać tagu script tym obiekcie konfiguracyjnym do DOM.

Odpowiedz

4

Skrypt widget uruchamiany w pliku document.scripts i wyszukujący jeden z ciągiem "/js/plusone.js" w atrybucie scr. Po tym ciągu przycinania i utwórz anonimową funkcję. Wynikiem tego jest obiekt z właściwościami konfiguracji.

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 za zbadanie tego :) – Frunsi

7

Ponieważ źródło google jest zaciemniane, nie wiem, jak to robią. W jaki sposób mogę to zrobić, użyj JQuery, aby znaleźć znacznik, a następnie użyj .innerHTML, aby uzyskać to jako ciąg, a następnie użyj JSON.parse do bezpiecznego analizowania obiektu.

+0

thx! Miałeś rację, ale przyjąłem drugą odpowiedź, ponieważ dostarczyłem dowodów - choć w końcu miałem nadzieję, że odpowiedź jest inna. Jest to trochę dziwna metoda, ale taka jest. Dzięki. – Frunsi