2011-06-29 18 views
11

google +1 düğme gömme kodunun yapılandırmalı bir javascript nesnesi olabilir (ör. "{lang:'de'}").google +1 javascript yapılandırma nesnesi

Düz javascript'te, bu nesne oluşturulup hemen yok edilir, çünkü hiçbir şey tarafından başvurulmaz.

Acaba google komut dosyaları bu nesneye nasıl erişiyor? dinamik DOM'ye yapılandırma nesnesi içeren komut dosyası etiketi yazarken hariç -

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

İşe görünüyor.

cevap

4

Araç komut document.scripts çalıştırmak ve scr özelliğindeki dize "/js/plusone.js" ile bir arama. Bu trim dizesinden sonra ve anonim işlev oluşturun. Sonuç, yapılandırma özelliklerine sahip nesnedir.

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

7

Google kaynağı gizlendiğinden, nasıl yaptıklarını bilmiyorum. Bunu nasıl yapacağım, etiketi bulmak için JQuery'yi kullanmalı ve bunu bir dizge olarak almak için .innerHTML kullanın, sonra nesneyi güvenli bir şekilde ayrıştırmak için JSON.parse öğesini kullanın.

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

thx! Haklıydınız, ama diğer cevabı kabul ettim, çünkü kanıtları üretiyordu - sonuçta cevabın farklı olduğunu umuyorum. Bu biraz garip bir yöntem, ama öyle gibi. Teşekkürler. Bunu araştırmak için – Frunsi

İlgili konular