Instagram embeds не работает при динамическом добавлении embeds
работа над блогом, который загружает сообщения на бесконечном скроллере. Каждое сообщение в блоге может иметь или не иметь Instagram. Я нахожу, что первый, который отображается на странице, будет обработан (независимо от того, находится ли он в начальной разметке страницы или динамически добавлен), следующие не будут. Вот простой JS Bin, который иллюстрирует проблему:
http://jsbin.com/hilixi/1/edit?html,js, выход
первое встраивание Instagram находится в начальном разметка страницы. Еще один Instagram embed добавляется после загрузки страницы, через 4 секунды. Второй embed add не обрабатывается.
любые идеи, почему? Кажется, скрипт Instagram embed будет работать только один раз. Могу ли я заставить его обновиться?
спасибо, Мэтт!--1-->
3 ответов
вставить.сценарий js, который поставляется с кодом вставки Instagram, имеет функцию процесса, которую вы можете вызвать.
window.instgrm.Embeds.process()
просто используйте это всякий раз, когда ваш динамический контент загружается.
в вашем приложении.JS создайте директиву для добавления элемента скрипта:
.directive('externalscript', function() {
var injectScript = function(element) {
var instagramScript = angular.element(document.createElement('script'));
instagramScript.attr('async defer');
instagramScript.attr('charset', 'utf-8');
instagramScript.attr('src', 'http://platform.instagram.com/en_US/embeds.js');
instagramScript.attr('onload', 'window.instgrm.Embeds.process()');
element.append(instagramScript);
var twitterScript = angular.element(document.createElement('script'));
twitterScript.attr('async defer');
twitterScript.attr('charset', 'utf-8');
twitterScript.attr('src', 'http://platform.twitter.com/widgets.js');
element.append(twitterScript);
};
return {
link: function(scope, element) {
injectScript(element);
}
};
})
а затем в вашем html-представлении вызовите:
<div externalscript></div>
вставка этого в область верхнего и нижнего колонтитулов работала для меня в блоге WordPress.
<script async="" defer="defer" src="//platform.instagram.com/en_US/embeds.js"></script>