Така че се опитвам да извлека анимация на Edge чрез jQuerys $.getScript(), което е същото като извикването на $.ajax с dataType: скрипт.
Сега, ако включа скрипта със скрипт таг, той работи добре, но когато се опитам да заредя и изпълня скрипта чрез $.getScript() нищо не се случва. (Не получавам никакви грешки и скриптът и подскриптовете се зареждат добре - но нищо не се случва.)
Някой опитвал ли е да прави това преди? Подозирам, че имам проблеми със зареждането му през AJAX, защото Adobe използва yepnope в page_a_edgePreload.js.
Използвах прост пример, който намерих от Adobe Edge за тестови цели. Ако искате да го изпробвате локално - отворете редактор и запазете следното във файл wrapper.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>Edge always wanted to be a Wrapper</title>
<style>
.edgeLoad-PAGE_A { display:none; }
</style>
<script src="edge_includes/jquery-1.7.1.min.js"></script>
</head>
<body style="margin:0;padding:0;">
<H1>WRAPPER.HTML</H1>
<div id="content" class="PAGE_A">
<p>EDGE animation composition should appear beneath me!</p>
</div>
<script type="text/javascript">
$.getScript("page_a_edgePreload.js", function(data, textStatus, jqxhr) {
//console.log(data); //data returned
console.log(textStatus); //success
console.log(jqxhr.status); //200
console.log('Load was performed.');
});
</script>
<!--uncomment script below to see that it works if included regulary -->
<!--<script src="page_a_edgePreload.js"></script>-->
</body>
</html>
След това изтеглете примерния .zip файл от Adobe тук: http://blogs.adobe.com/edge/files/2012/05/an15BootStrapExample.zip
Извлечете следното в същата папка като вашия wrapper.html:
- edge_includes папка
- page_a_edge.js
- page_a_edgeActions.js
- page_a_edgePreload.js
РЕДАКТИРАНЕ
Добре, така че опитах да заредя файловете, без да минавам през edgePreloader.js, както беше предложено от Алекс. Получавам достъп до AdobeEdge, но той се връща недефиниран, ако напиша композицията след успешно зареждане на скриптовете:
var comp = window.AdobeEdge.getComposition("PAGE_A");
var stage = comp.getStage();
console.log("Stage: " + stage);
(Опитах това и с функция setTimeout() - все още същият резултат)
Следното работи добре, ако включа скрипта в обикновен <script src="..edgePreloader.js"></script>
таг
setTimeout(function() {
// Try getting the edge composition after 2 seconds
var comp = window.AdobeEdge.getComposition("PAGE_A");
var stage = comp.getStage();
console.log("Stage: " + stage);
}, 2000);
Забелязвам, че Adobe използва затваряния на edgePreload.js, изглежда, че трябва да заредя edge.1.5.0.js вътре в това затваряне. Сега се опитвам да разбера кои събития и функции са от съществено значение в това затваряне, за да може да работи.