javascript скретчблоки квадратное пространство

Я хотел бы использовать Scratchblocks (инструмент для рендеринга визуальных блоков кода Scratch из текстового списка, на GitHub ) на моем сайте Squarespace. Проблема, которую я получаю, заключается в том, что скретчблоки никогда не отображаются при первой загрузке, а только после обновления.

Это в заголовке (устанавливается в заголовке для этого конкретного блога):

<script src="https://scratchblocks.github.io/js/scratchblocks-v3.1-min.js""></script>

Тогда я думаю, что мне нужно вызвать эту функцию в конце страницы - я поместил ее в нижний колонтитул:

scratchblocks.renderMatching('pre.blocks');

ПРИМЕЧАНИЕ. Когда я просматриваю исходный код, я как бы дважды вижу этот JavaScript в конце страницы. Не уверен, что там происходит.

Вот пример этого на моем веб-сайте, где он отображает скретчблоки только после обновления. [ОБНОВЛЕНИЕ — после исправления, приведенного ниже, теперь это отображается с первого раза, насколько я могу судить.] [http://www.glennbroadway.com/coding-zone/2017/4/6/simple-collisions-in-scratch]2

Вот пример того, как кто-то другой использует его, и он работает правильно. Я проверил источник и не могу понять, как они это делают. https://codeclubprojects.org/en-GB/scratch/memory/

Я также пробовал все различные методы, перечисленные в другом месте в stackoverflow, для загрузки javascript только после завершения HTML. Я не могу заставить ни один из них работать, но я думаю, что проблема как-то связана с Squarespace, у меня просто нет знаний, чтобы решить, что именно.

Любая помощь будет принята с благодарностью.


person Glenn Broadway    schedule 15.06.2017    source источник
comment
Проекты codeclub, на которые вы ссылались, выглядят так, как будто они используют Scratch 2.0 на основе Flash, а не интересующую вас библиотеку Scratch-Blocks (будущий Scratch 3.0).   -  person Anm    schedule 21.07.2017
comment
Спасибо за обновление моего вопроса Anm. Я не уверен, что вы имеете в виду под своим комментарием. Scratchblocks относится к инструменту для рендеринга фрагментов кода в основной части страницы, а не к версии Scratch, на которой запущена встроенная игра (это Scratch 2 с использованием Flash). Scratch 3 все еще находится в бета-версии, не так ли?   -  person Glenn Broadway    schedule 23.07.2017
comment
Scratch 2.0 основан на Flash, и это то, что я вижу на codeclubprojects. Scratch-Blocks — это рендерер кода для грядущей версии Scratch 3.0 (да, все еще в разработке), основанный на Blockly и не использующий Flash. Scratch-Blocks — это не то, что вы видите сегодня, заходя в Scratch. (Источник: я разработчик Blockly, который работает с командой Scratch.)   -  person Anm    schedule 24.07.2017
comment
@Anm scratch-blocks != scratchblocks. Источник: разработчик скретчблоков :-) [Название нового проекта Массачусетского технологического института scratch-blocks сбивает с толку!]   -  person tjvr    schedule 27.10.2017


Ответы (1)


В Squarespace, когда ваш собственный Javascript работает только после обновления страницы, это, скорее всего, связано с AJAX-загрузка Squarespace:

Иногда Ajax может конфликтовать со встроенным пользовательским кодом или якорными ссылками. Ajax также может вмешиваться в аналитику сайта, регистрируя посещения только на первой странице.

Вы можете отключить AJAX для своего шаблона. Или см. другие подходы, описанные здесь: https://stackoverflow.com/a/42604055/5338581, включая:

window.addEventListener("mercury:load", function(){
   // do stuff
});

Кроме того, я обычно рекомендую размещать пользовательский код в области ввода кода «Нижний колонтитул», если у вас нет особой причины поступать иначе.

person Brandon    schedule 15.06.2017
comment
Спасибо, отключение загрузки AJAX помогло. У меня уже была последняя часть Javascript в нижнем колонтитуле, так что это хорошо. Я действительно ценю твою помощь. - person Glenn Broadway; 16.06.2017