Поэтому, если я устанавливаю значок Yahoo Pipe на своем сайте, Yahoo предоставляет мне этот код
<script src = "http://pipes.yahoo.com/js/listbadge.js">{"pipe_id":"USER_ID","_btype":"list"}</script>
Обратите внимание, что он передает литерал объекта удаленному сценарию. я хотел бы сделать что-то подобное с моими собственными скриптами, как вы взаимодействуете с этим вводом?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Фактически вы не можете передавать переменные, как этот изначально. Что Yahoo делает там, так это то, что в своем файле listbadge.js он просматривает все теги <script> на странице, пока не найдет тот, который его включает, а затем анализирует innerHTML как JSON.
Их источник был слегка запутан, но вот мое лучшее понимание.
var scripts = document.getElementsByTagName("SCRIPT");
for (var i = 0; i < scripts.length; i++) {
var includeString = scripts[i].src;
if (includeString.match("listbadge.js")) {
if (scripts[i].innerHTML){
var passedVariables = parseJson(scripts[i].innerHTML);
}
break;
}
}
содержимое тега скрипта игнорируется, если указан атрибут src.
В чем преимущество этого подхода по сравнению с добавлением еще одного тега сценария с объектом, к которому вы хотите получить доступ?
@Gene: экономит около 80 байт, если контент закодирован с помощью Unicode :-) Я полагаю, если для вас важно на 80 байт меньше, тогда заполните свои ботинки! В противном случае я не знаю. :-)
На самом деле, это на самом деле не сохраняет это или что-то еще, так как у вас должна быть функция, как показано выше, чтобы ее проанализировать.
он держит все вместе - плюс, вам не нужно беспокоиться о конфликтах в глобальном пространстве имен.
Мне просто интересно. Почему именно JSON? код находится в тегах скрипта, поэтому это может быть объект javascript с именем, с которого нужно начинать. Тогда вы могли бы просто получить доступ к объекту по имени из загруженного скрипта. Какой смысл разбирать JSON?