Rails 4 Turbolinks не загружает MathJax

У меня есть приложение Rails4, которое использует MathJax. Я использую MathJax CDN, помещая следующую строку в раздел <head> моего файла app/views/layouts/application.html.erb:

<script type="text/javascript" src="path-to-mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

Дополнительная информация: http://docs.mathjax.org/en/latest/start.html#mathjax-cdn

Из-за Turbolinks MathJax загружается только на домашней странице и не будет загружаться на других страницах, пока я не обновлю страницу (что нежелательно). Вместо этого я хочу, чтобы MathJax загружался только на страницах /Math/New и Physics/Show. Что я должен делать? (не хочу отключать турболинки)

Большое спасибо за твою помощь.


person user2725109    schedule 04.11.2013    source источник


Ответы (3)


Я также боролся с той же проблемой с последних нескольких дней. Наконец-то нашел способ решить эту проблему. Вот объяснение того же:

Если вы пишете динамическую веб-страницу, на которой содержание, содержащее математику, может появиться после того, как MathJax уже набрал остальную часть страницы, вам нужно указать MathJax, чтобы он снова искал математику на странице, когда это новое содержимое будет создано. Для этого вам нужно использовать метод MathJax.Hub.Typeset(). Это заставит препроцессоры (если таковые были загружены) снова запуститься по странице, а затем MathJax будет искать на странице необработанную математику и набирать ее, оставляя без изменений любую математику, которая уже была набрана.

Поэтому самое простое решение — добавить в файл app/views/layouts/application.html.erb следующее:

<script>
      MathJax.Hub.Typeset();
</script>

Не добавляйте это в раздел заголовка. Добавьте его после закрытия тега body.

person Satyam Singh    schedule 26.12.2013
comment
Это решение создает для меня [ошибку математической обработки], если mathjax загружается в раскрывающемся меню. - person sanny; 24.02.2015
comment
$(document).on 'turbolinks:load', -> MathJax.Hub.Queue(["Typeset", MathJax.Hub]), направьте меня в правильном направлении, спасибо (рейлы 5, турболинки 5) - person Alexis; 15.09.2016

Вы можете добавить data-no-turbolink только для этой ссылки, чтобы она работала как обычная ссылка, взгляните на https://github.com/rails/turbolinks/#opting-out-of-turbolinks

person McGar    schedule 04.11.2013
comment
Спасибо за ваш комментарий. Я добавил data-no-turbolink в конец тега script, но это не сработало. Я также поместил скрипт в ‹div data-no-turbolink›...‹/div›, но это не сработало. Я думаю, причина в том, что у вас не может быть ‹div› внутри ‹head›. - person user2725109; 05.11.2013

Здесь можно найти три отличных решения: http://reed.github.io/turbolinks-compatibility/mathjax.html

person user2725109    schedule 26.12.2013