11

google +1 按钮嵌入代码可以有一个带有配置的 javascript 对象(例如“ {lang:'de'}”)。

在普通的 javascript 中,这个对象会被创建并立即销毁,因为它没有被任何东西引用。

我想知道谷歌脚本如何访问这个对象?

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

它似乎有效 - 除非您将包含配置对象的脚本标记动态写入 DOM。

4

2 回答 2

7

由于谷歌来源被混淆了,我不知道他们是如何做到的。我将如何做到这一点是使用 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 回答