1

所以我试图通过 jQuerys $.getScript() 检索 Edge 动画,这与使用 dataType: 脚本调用 $.ajax 相同。

现在,如果我将脚本包含在脚本标记中,它可以正常工作,但是当我尝试通过 $.getScript() 加载和执行脚本时,什么也没有发生。(我没有收到任何错误,脚本和子脚本加载正常 - 但没有任何反应。)

有没有人尝试过这样做?我怀疑我在通过 AJAX 加载它时遇到问题,因为 Adob​​e 在 page_a_edgePreload.js 中使用了 yepnope。

我使用从 Adob​​e 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>

然后在此处从 Adob​​e 下载示例 .zip 文件: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

编辑

好的,所以我尝试按照 Alex 的建议在不通过 edgePreloader.js 的情况下加载文件。我可以访问 Adob​​eEdge,但如果我在成功加载脚本后写出合成,它会返回 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);

我注意到 Adob​​e 在 edgePreload.js 上使用了闭包,看来我必须在这个闭包中加载 edge.1.5.0.js。我现在试图了解在这个闭包中哪些事件和特性是必不可少的,以使其正常工作。

4

2 回答 2

1

您可能只想直接加载 adobe 边缘文件,而不是在预加载器中注入另一个预加载器。但是,如果您只想使用预加载器(例如,yepnope)异步加载内容,那么像您注释掉的那样包含文件正是它应该如何工作的。

如果您想将其切换为使用 jQuery,getScript您可以只切换 yepnope 特定的东西。不幸的是,预加载器文件中有很多,但我认为它是 Adob​​e 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
    });
  });
});

确切的代码可能并不完全适合让您充分工作,但它应该是正确的想法。

于 2013-08-27T19:21:26.170 回答
0

我不是 javascript 专家,但我在同一网站上多次使用 Edge Animate 时遇到的问题似乎至少相似。也许我可以通过我找到的链接做出一些贡献,我使用的东西如下: http ://www.tricedesigns.com/2012/07/12/using-adobe-edge-animations-as-components/我的工作(部分)在这里:防止 Adob​​e Edge preload.js 文件加载 jquery我也想知道为什么 Edge 必须在准备好之前加载 jquery,即使它已经在主页中。

于 2013-12-28T08:20:26.993 回答