Объект конфигурации google +1 javascript
Встраиваемый код кнопки google +1 может содержать объект javascript с конфигурацией (например, "{lang:'de'}
" ).
В простом javascript этот объект будет создан и немедленно уничтожен, потому что на него нет ссылки.
Интересно, как скрипты google получают доступ к этому объекту?
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{lang: 'de'}
</script>
Кажется, что работает - за исключением случаев, когда вы динамически записываете тег script, включая объект конфигурации, в DOM.
Ответы
Ответ 1
Widget script выполняется в document.scripts и ищет один со строкой "/js/plusone.js" в атрибуте scr.
После этой строки обрезки и создания анонимной функции.
Результатом этого является объект с параметрами конфигурации.
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) {}
}
Ответ 2
Поскольку источник 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)