したがって、jQuerys $.getScript() を介して Edge アニメーションを取得しようとしています。これは、dataType: script で $.ajax を呼び出すのと同じです。
script タグを使用してスクリプトを含めると正常に動作しますが、$.getScript() を使用してスクリプトを読み込んで実行しようとしても何も起こりません。(エラーは発生せず、スクリプトとサブスクリプトは正常にロードされますが、何も起こりません。)
誰もこれを試したことがありますか?Adobe は page_a_edgePreload.js で yepnope を使用しているため、AJAX 経由での読み込みに問題があると思われます。
テスト目的で、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>
次に、Adobe からサンプルの .zip ファイルをダウンロードします: 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
編集
わかりましたので、Alex が提案したように、edgePreloader.js を経由せずにファイルを読み込んでみました。AdobeEdge にアクセスできますが、スクリプトを正常に読み込んだ後にコンポジションを書き出すと、undefined が返されます。
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 をロードする必要があるようです。私は今、この閉鎖を機能させるために不可欠なイベントと機能を理解しようとしています。