Повторные инъекции Javascript для вызовов API YouTube? - PullRequest
2 голосов
/ 28 марта 2011

Я создаю веб-страницу, которая использует API YouTube.Я хочу иметь возможность вызывать вызов API в стиле AJAX для API YouTube каждый раз, когда пользователь выполняет определенные действия, и обновлять элементы страницы с результатами вызовов.В документации YouTube рекомендуется использовать инъекцию Javascript для решения проблем междоменного разрешения, связанных с вызовами AJAX на чужой домен (gdata.youtube.com) с моей веб-страницы.Например:

<script 
    type="text/javascript" 
    src="http://gdata.youtube.com/feeds/users/GoogleDevelopers/uploads?alt=json-in-script&format=5&callback=showMyVideos">
</script>

Этот фрагмент, размещенный внутри HTML BODY, отправляет запрос на подачу видео из канала "GoogleDevelopers" с параметром "обратный вызов", вызывая вызов showMyVideos () при возврате вызова.showMyVideos (), не показанный здесь и произвольно названный, использует вызовы DOM, чтобы обновить именованный DIV с результатами вызова.

Я хочу сделать ту же операцию, но динамически, а не статически, как показано выше.Например, я видел такой код:

var s = document.createElement('script');
    s.type = "text/javascript";
    s.src = "http://gdata.youtube.com/feeds/users/GoogleDevelopers/uploads?alt=json-in-script&format=5&callback=showMyVideos"
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);

Меня беспокоит, если я буду использовать этот подход, так как я буду делать много вызовов AJAX, я буду накапливать все больше и больше динамически генерируемых элементов DOM Javascript вдерево DOM веб-страницы, и я беспокоюсь о том, какие последствия это может иметь для браузера или чего-либо еще.

Есть ли способ сделать внедрение Javascript в этом стиле, не загромождая элементы HEAD множеством элементов Javascript?Хотелось бы получить краткий пример кода.

- roschler

1 Ответ

1 голос
/ 28 марта 2011

Ну, не так сложно, после того, как вы получите свои данные, вы очистите их, удалив элемент script.

...