2013-08-27 32 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,甚至它已经在主页面。