Załaduję w ajax modal/popin z karuzelą Bootstrap, w której każdy slajd jest (nie obraz jak w wielu pytaniach o leniwym ładowaniu), ale iframe z oEmbed z różnych serwisów społecznościowych (facebook, instagram, twitter, ...).Lazy ładuje zawartość slajdów w karuzeli (zawartość jest oEmbeds/iframes)
Problem polega na tym, że po kliknięciu przycisku, który ładuje modalny, WSZYSTKIE slajdy zostają załadowane, to jest od 15 do 20 oembed (każdy z nich ładuje tekst zawartości, obraz i javascript ...).
Chciałbym być sprytny i tylko "leniwe ładowanie" slajdów przez slajd lub jeszcze bardziej inteligentne 3 slajdy po 3 slajdy.
Po prostu wspomniałem również ze względu na informacje, które używam scrollMonitor i Hubspot Messenger. Ale wolałbym używać zdarzeń slajdów Bootstrap, aby wywołać pojawienie się/obciążenie każdego slajdu lub jakiejkolwiek sugestii.
Używam Ruby on Rails jak język back-end
URL interfejsu oEmbed programowo zmienić, ponieważ są one inputed z Admin Backoffice i zmienić na każdy artykuł/strona ale znajdziesz poniżej przykładzie:
page.html
//button to click to make modal appear
<a class="btn btn-primary" onclick="loadModal()" id="socialStoryModal">
load modal
</a>
obciążenia Modal z HubSpot Messenger w page.js
function loadModal() {
var msg;
msg = Messenger().post({
message: 'modal.html.erb',/see below the carousel
showCloseButton: true,
hideAfter: false
});
}
modal.html.erb = Modal z karuzeli i Odtwarzacze umieszczone z uĹĽyciem społecznych (tu może być do 50 z nich)
<div id="embeds-carousel" class="carousel slide" data-ride="carousel" data-interval="false">
<div class="carousel-inner" role="listbox">
<div class="item active" id="item1" >
<script>
var url = « https://api.instagram.com/oembed?url=https://www.instagram.com/p/5456544654565/";
embed_request = {
url: url,
dataType: "jsonp",
cache: false,
success: function (data) {
try {
var embed_html = data.html;
$("div#item1").html(embed_html);
} catch (err) {
console.log(err);
}
}
};
$.ajax(embed_request);
</script>
</div>
<div class="item" id="item2" >
<script>
var url = "https://publish.twitter.com/oembed?url=https://twitter.com/coca/status/546664465342324";
embed_request = {
url: url,
dataType: "jsonp",
cache: false,
success: function (data) {
try {
var embed_html = data.html;
$("div#item2").html(embed_html);
} catch (err) {
console.log(err);
}
}
};
$.ajax(embed_request);
</script>
</div>
<div class="item" id="item3" >
<script>
var url = "https://publish.twitter.com/oembed?url=https://twitter.com/muse/status/65353453F";
embed_request = {
url: url,
dataType: "jsonp",
cache: false,
success: function (data) {
try {
var embed_html = data.html;
$("div#item3").html(embed_html);
} catch (err) {
console.log(err);
}
}
};
$.ajax(embed_request);
</script>
</div>
<div class="item" id="item4" >
<script>
var url = « https://api.instagram.com/oembed?url=https://www.instagram.com/p/cftzezeker5/";
embed_request = {
url: url,
dataType: "jsonp",
cache: false,
success: function (data) {
try {
var embed_html = data.html;
$("div#item4").html(embed_html);
} catch (err) {
console.log(err);
}
}
};
$.ajax(embed_request);
</script>
</div>
<div class="item" id="item5" >
<script>
var url = « var url = "https://www.facebook.com/plugins/post/oembed.json/?url=https://www.facebook.com/cocacola/posts/fdgyez556Yds";
";
embed_request = {
url: url,
dataType: "jsonp",
cache: false,
success: function (data) {
try {
var embed_html = data.html;
$("div#item5").html(embed_html);
} catch (err) {
console.log(err);
}
}
};
$.ajax(embed_request);
</script>
</div>
and so on…
</div>
<!-- Controls -->
<a class="left carousel-control" href="#embeds-carousel" role="button" data-slide="prev">
<i class="fa chevron fa-chevron-left "></i>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#embeds-carousel" role="button" data-slide="next">
<i class="fa chevron fa-chevron-right "></i>
<span class="sr-only">Next</span>
</a>
</div>
Widziałem mnóstwo bibliotek do leniwego obciążeniem obrazy, a nawet czasami skrypty/iframe, ale wszystkie muszą bezpośrednio dodać pewne klasy w bloku, co nie jest dla mnie pomocne, ponieważ używam oembed powyżej i nie mam gdzie nigdzie umieścić tych leniwych klas.
Muszę sprawić, aby działał z tymi elementami iframe oEmbeds.
dzięki, zadziałało – Mathieu