ReferenceError при попытке вызова функций

Я получаю необработанную справочную ошибку всякий раз, когда пытаюсь вызвать функцию javascript в отдельном теге paperscript. Я попробовал тестовый код

HTML-тело:

<canvas id="c"></canvas>
<script type="text/javascript" src="vendor/paper.js"></script>
<script type="text/paperscript" src="foo1.js" canvas="c"></script>
<script type="text/javascript" src="foo2.js"></script>

В этом примере холст не будет использоваться, это просто то, что нужно для работы paper.js.

Итак, по самим скриптам:

foo1.js (бумажный сценарий)

function blah(){ console.log("blah"); }

foo2.js (javascript)

window.onload = function{ blah(); }

Теперь, если я загружаю HTML, консоль сообщает мне, что blah() выдает ошибку ссылки. Однако, если бы я изменил

type="text/paperscript"

to

type="text/javascript"

для foo1.js консоль будет отображать «blah», и ошибка не будет выдана. Почему это?


person Wolfram    schedule 05.05.2015    source источник
comment
Возможно, это связано с тем, как браузеры запускают JavaScript. Обычно браузер ждет загрузки всех скриптов, прежде чем запускать какой-либо код. Но так как foo1.js это text/paperscript, он пропускается и foo2.js запускается немедленно. Убедитесь, что код в foo2.js запущен после того, как бумага сотворила волшебство на foo1.js   -  person Halcyon    schedule 05.05.2015


Ответы (1)


Браузеры будут загружать только скрипты с type="text/javascript". В библиотеке paperscript может быть загрузчик для скриптов с type="text/paperscript", запускаемый из window.onload. Попробуйте добавить прослушиватель событий, чтобы не перезаписывать существующий загрузчик.

Пример:

function myInit() {
 blah();
}

if (window.addEventListener) {
  window.addEventListener('load', myInit, false); 
} else if (window.attachEvent) {
  window.attachEvent('onload', myInit);
}
person wolfhammer    schedule 05.05.2015