11

Google +1 ボタンの埋め込みコードには、設定付きの JavaScript オブジェクトを含めることができます (例: " {lang:'de'}")。

プレーンな JavaScript では、このオブジェクトは作成されてすぐに破棄されます。これは、何からも参照されていないためです。

Google スクリプトはこのオブジェクトにどのようにアクセスするのだろうか?

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

構成オブジェクトを含む script タグを DOM に動的に書き込む場合を除いて、動作しているようです。

4

2 に答える 2

7

Google のソースは難読化されているため、どうやってそれを行うのかわかりません。JQuery を使用してタグを検索し、.innerHTML を使用してこれを文字列として取得し、JSON.parse を使用してオブジェクトを安全に解析します。

<script ...>
 {"lang" : "de"}
</script>
...
var data= JSON.parse(
    $('script[src="https://apis.google.com/js/plusone.js"]')[0].innerHTML)
alert(data.lang)
于 2011-06-29T17:43:58.433 に答える
4

document.scripts で実行され、scr 属性に文字列 "/js/plusone.js" を含むウィジェット スクリプトが検索されます。このトリム文字列の後、無名関数を作成します。その結果は、構成プロパティを持つオブジェクトです。

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) {}
}
于 2011-07-01T13:20:36.007 に答える