2013-08-27 3 views
1

그래서 jQuerys $ .getScript()를 통해 Edge 애니메이션을 가져 오려고합니다. 이것은 dataType : script와 함께 $ .ajax를 호출하는 것과 같습니다.AJAX 호출로 가장자리 애니메이션을로드하는 방법은 무엇입니까? jquery getScript가 실패합니다.

이제 스크립트 태그를 사용하여 스크립트를 포함하면 제대로 작동하지만 $ .getScript()를 통해 스크립트를로드하고 실행하려고하면 아무 일도 발생하지 않습니다. (나는 어떤 오류도 가지지 않으며, 스크립트와 서브 스크립트는 잘로드된다. 그러나 아무 일도 일어나지 않는다.)

누구든지 전에 이것을 시도 했습니까? Adobe에서 page_a_edgePreload.js에서 yepnope를 사용하기 때문에 AJAX를 통해로드하는 데 문제가 있다고 생각합니다.

테스트 목적으로 Adobe Edge에서 찾은 간단한 예제를 사용했습니다. 로컬로 그것을 밖으로 시도 할 경우 - 편집기를 열고 wrapper.html 파일에 다음을 저장합니다 http://blogs.adobe.com/edge/files/2012/05/an15BootStrapExample.zip

추출 : 여기에 어도비에서 .zip 파일의 예를 다운로드 한 후

<!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> 

을 그리고 당신의 wrapper.html과 같은 폴더에 다음

  1. edge_includes 폴더
  2. page_a_edge.js
  3. page_a_edgeActions.js
  4. page_a_edgePreload.js

확인 편집, 그래서 나는 알렉스 제안으로 edgePreloader.js 거치지 않고 파일을로드했습니다. 나는 AdobeEdge에 액세스 할 수 있습니다,하지만 난 후 성공적으로 스크립트를로드 구성을 작성하는 경우는 undefined를 반환합니다 : (I도에서는 setTimeout() 함수이 시도 - 여전히 같은 결과)

var comp = window.AdobeEdge.getComposition("PAGE_A"); 
var stage = comp.getStage(); 
console.log("Stage: " + stage); 

미세 다음 작품은 내가 어도비는 edgePreload.js에 클로저를 사용하는 것을 알 정기적 <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); 

에 스크립트를 포함 할 경우, 나는이 폐쇄 내부 edge.1.5.0.js를로드해야합니다 것 같다. 이제는이 폐쇄에서 필수적인 이벤트와 기능을 이해하려고 노력 중입니다.

답변

1

프리 로더 내부에 다른 프리 로더를 삽입하는 대신 직접 adobe edge 파일을로드하기 만하면됩니다. 하지만 예를 들어 프리 로더 (예를 들어 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

저는 자바 스크립트 전문가는 아니지만 같은 웹 사이트에서 여러 번 사용했을 때 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를로드해야하는 이유가 궁금합니다. 메인 페이지.