所以我试图通过 jQuerys $.getScript() 检索 Edge 动画,这与使用 dataType: 脚本调用 $.ajax 相同。
现在,如果我将脚本包含在脚本标记中,它可以正常工作,但是当我尝试通过 $.getScript() 加载和执行脚本时,什么也没有发生。(我没有收到任何错误,脚本和子脚本加载正常 - 但没有任何反应。)
有没有人尝试过这样做?我怀疑我在通过 AJAX 加载它时遇到问题,因为 Adobe 在 page_a_edgePreload.js 中使用了 yepnope。
我使用从 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。我现在试图了解在这个闭包中哪些事件和特性是必不可少的,以使其正常工作。