2013-08-27 4 views
1

Так что я пытаюсь получить анимацию Edge через jQuerys $ .getScript(), которая совпадает с вызовом $ .ajax с типом dataType: script.Как загрузить анимацию края с помощью вызова AJAX? jquery getScript не работает

Теперь, если я включаю скрипт с тегом скрипта, он работает нормально, но когда я пытаюсь загрузить и выполнить скрипт через $ .getScript(), ничего не происходит. (Я не получаю никаких ошибок, и скрипт и суб-скрипты загружаются в порядке, но ничего не происходит.)

Неужели кто-нибудь пытался это сделать раньше? Я подозреваю, что у меня проблемы с загрузкой через AJAX, потому что Adobe использует yepnope в page_a_edgePreload.js.

Я использовал простой пример, который я нашел из 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> 

А затем загрузить пример .zip файл из Adobe здесь: http://blogs.adobe.com/edge/files/2012/05/an15BootStrapExample.zip

Extract следующий в ту же папку, что wrapper.html: папка

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

EDIT

Ok, поэтому я попытался загрузки файлов без прохождения edgePreloader.js как предложил Алекс. Я получаю доступ к AdobeEdge, но он возвращает неопределенное значение, если я пишу из композиции после успешной загрузки скриптов:

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

Возможно, вы просто хотите загрузить файл граничной рамки непосредственно, вместо того, чтобы вводить другой предварительный загрузчик внутри прелоадера. Но если вы просто хотите загружать вещи асинхронно с помощью preloader (например, yepnope), тогда включающий файл, как вы закомментировали, точно так же, как должен работать.

Если вы хотите переключить его на использование getScript jQuery, вы можете просто отключить конкретный материал 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 
    }); 
    }); 
}); 

Этот точный код, вероятно, не совсем подходит для полной работы, но это должна быть правильная идея.

+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, прежде чем быть готовым, даже если он уже находится в на главной странице.

 Смежные вопросы

  • Нет связанных вопросов^_^