谷歌+;1 javascript配置对象
google+1按钮嵌入代码可以有一个带有配置的javascript对象(例如“谷歌+;1 javascript配置对象,javascript,google-plus-one,Javascript,Google Plus One,google+1按钮嵌入代码可以有一个带有配置的javascript对象(例如“{lang:'de'}”) 在普通javascript中,这个对象将被创建并立即销毁,因为它没有被任何东西引用 我想知道google脚本是如何访问这个对象的 <script type="text/javascript" src="https://apis.google.com/js/plusone.js"> {lang: 'de'} </script> {lang:'de'} 它似乎
{lang:'de'}
”)
在普通javascript中,这个对象将被创建并立即销毁,因为它没有被任何东西引用
我想知道google脚本是如何访问这个对象的
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{lang: 'de'}
</script>
{lang:'de'}
它似乎可以工作-除非您将包含配置对象的脚本标记动态写入DOM。由于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)
{“郎”:“德”}
...
var data=JSON.parse(
$('script[src=”https://apis.google.com/js/plusone.js“]”)[0]。innerHTML)
警报(data.lang)
小部件脚本在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) {}
}
if(Gb[u]>0){
对于(var Hb=”,Ib=0;Ib
thx!你是对的,但我接受了另一个答案,因为它提供了证据——尽管最后,我希望答案是不同的。这有点奇怪,但它就是这样。谢谢。