2013-08-27 43 views
1

所以我正嘗試通過檢索$ jQuerys .getScript(),這是與調用$就與數據類型創建邊緣動畫:腳本。如何通過AJAX調用加載邊緣動畫? jQuery的getScript加入失敗

現在,如果我包括與腳本標記它工作正常的腳本,但是當我嘗試加載,並通過$ .getScript執行腳本()什麼也不會發生。 (我沒有得到任何錯誤,腳本和子腳本加載罰款 - 但沒有任何反應。)

有沒有人嘗試過這樣做呢?我懷疑我通過AJAX加載它有問題,因爲Adobe在page_a_edgePreload.js中使用了yepnope。

我用一個簡單的例子,我從Adobe的邊緣找到用於測試目的。 如果要在本地嘗試一下 - 打開一個編輯和保存以下爲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:

  1. edge_includes文件夾
  2. page_a_edge.js
  3. page_a_edgeActions.js
  4. page_a_edgePreload.js

編輯

好了,所以我試圖加載文件而不需要通過edgePreloader.js由Alex的建議。我得到訪問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。我現在試圖瞭解什麼事件和功能是必不可少的關閉,以使其工作。

回答

1

您可能只想直接加載adobe邊緣文件,而不是在預加載器中注入另一個預加載器。但是,如果你只是想用預加載程序異步加載東西(例如yepnope),那麼包含文件就像你註釋掉的一樣,應該是

如果您想將其切換爲使用jQuery的getScript,您可以切換yepnope特定的東西。不幸的是,預加載器文件有一堆,但我認爲這是Adobe Edge的樣板。這就像你不在一個例子中時會轉換的東西。

所以你的線,看起來像這樣:

$.getScript("page_a_edgePreload.js", function(data, textStatus, jqxhr) {}); 

應該改成這樣:

$.getScript("edge_includes/edge.1.5.0.min.js", function(data, textStatus, jqxhr) { 
    // AdobeEdge should exist now 
}); 

預加載看起來也像它的一些功能測試和設置事件。如果你需要這些東西,你可以從文件底部複製它。但如果你知道調用初始化不預加載同樣的事情(你似乎想避免)什麼,那麼你可以只加載在預載拉在這個例子中,其他兩個文件:

$.getScript("edge_includes/edge.1.5.0.min.js", function() { 
    $.getScript('page_a_edge.js', function(){ 
    $.getScript('page_a_edgeActions.js', function(){ 
     // window.AdobeEdge should be fully available 
    }); 
    }); 
}); 

確切的代碼可能並不完全正確,以使您完全正常工作,但它應該是正確的想法。

+0

昨天肯定很累,因爲我用bootstrapCallback試過的東西沒有用 - 這只是我忘記了在底部註釋 ..我會繼續試圖解決這個問題。 –

0

我不是一位javascript專家,但是我在Edge Animate中多次在同一網站上使用的問題似乎至少是相似的。也許我可以通過我找到的鏈接和我使用的鏈接貢獻一下,其中包括以下內容:http://www.tricedesigns.com/2012/07/12/using-adobe-edge-animations-as-components/我的工作(部分)在這裏:prevent Adobe Edge preload.js file from loading jquery我也在想,爲什麼Edge在準備好之前必須加載jquery,甚至它已經在主頁面。