所以我试图通过jQuerys $ .getScript()检索Edge动画,这与使用dataType:script调用$ .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相同的文件夹中:
修改的
好的,所以我尝试加载文件而不经过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。我现在正试图了解这个闭包中必不可少的事件和特征,以使其正常工作。
答案 0 :(得分:1)
您可能只想直接加载adobe边缘文件,而不是在预加载器中注入另一个预加载器。但是如果你只想用预加载器(例如yepnope)异步加载东西,那么像你已经注释掉的那样包含文件就是应该的工作方式。
如果你想将它切换为使用jQuery的getScript
,你可以切换出yepnope特定的东西。不幸的是,preloader文件中有一堆,但我认为它是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
});
});
});
确切的代码可能并不完全正确,但它应该是正确的想法。
答案 1 :(得分: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在准备好之前,即使它已经在主页面中。