2016-05-26 3 views
1

Я пытаюсь создать модальное окно, которое отображает анимацию холста. Идея, очевидно, заключается в том, чтобы сделать это без загрузки новой страницы и динамически загружать анимацию. Анимация холста создается из файла javascript - с использованием библиотеки p5.js (Обработка для Интернета).Как загрузить сценарий p5.js динамически

Я использую JQuery.load(), чтобы динамически загружать содержимое html в модальное окно, но тег скрипта внутри этого html не выполняется.

Ниже представлен html-файл, который я намерен загрузить в модальное окно. Еще раз, когда я загружаю этот файл с помощью JQuery.load ('/ path/filename.html'), я не получаю никаких ошибок, однако тег script at не выполняется.

<div id="sketchContainer" class="sketchContainer"> 



</div> 

<script type="text/javascript" src="p5sketch/sketch.js"></script> 

ниже является JavaScript, который обрабатывает .load() запросы.

function loadData() { 

    $('.projectBlock').load("modalContent.html", function() { 
    console.log("load html was performed"); 
    $.getScript("p5sketch/sketch.js", function(data, textStatus, jqxhr) { 
     console.log(data); 
     console.log(textStatus); 
     console.log(jqxhr.status); 
     console.log("load sketch was performed"); 
    }); 
    }); 

Возможно, у меня что-то не хватает. Возможно, это имеет какое-то отношение к холсту. Я просто не могу понять. Кто-нибудь знает, как подойти к этому?

+0

Как вы обычно запускаете скрипт sketch.js ?? возможно, вам нужно добавить функцию самозапуска, чтобы запустить ее, потому что ни один из обычных событий window.onload не срабатывает при загрузке скрипта – Blindman67

ответ

0

Я сделал поиск Google в «загрузки HTML JQuery с JavaScript» и получил тонну результатов, включая эти связанные вопросы:

jQuery .load() call doesn't execute javascript in loaded html file

jQuery .load()/.ajax() not executing javascript in returned HTML after appended

Согласно ответам на эти вопросы , jquery удаляет теги <script>. Вы должны загрузить JavaScript отдельно от html. Для этого вы можете использовать функцию jQuery getScript().