2013-06-11 2 views
1

Небольшой контекст моей проблемы. Я обновляю MathML в этом div, который в настоящее время отображает HTML. Когда я загружаю страницу в первый раз, если запускает скрипт MathJax и отлично отображает все MathML. Когда я нажимаю «Предварительный просмотр изменений», кнопка, которая принимает текущие изменения, сделанные в текстовой области, и отображает их в окне предварительного просмотра, MathML исчезает.Обновление Javascript на странице без обновления HTML

Я думаю, проблема в том, что обновление div не вызывает сценарий MathJax. Я попытался $ .getScript(), и я попытался добавить скрипт, используя document.createElement (script), каждый раз, когда нажата кнопка предварительного просмотра, но все это безрезультатно.

Я надеялся, если кто-то сможет мне помочь.

Заранее спасибо.

+0

Похоже, вам нужно будет повторно инициализировать MathJax после обновления результата ajax. Можете ли вы предоставить какой-то код, который вы пробовали до сих пор? – showdev

+0

Кроме того, я не использую AJAX. Я просто делаю '$ (DivIDHere) .html (htmlToReplaceHere)' – Ronak

+0

А, моя ошибка. Если возможно, я хочу, чтобы ваш HTML-код разъяснил, как MathJax взаимодействует с ним. MathJax просто возвращает значение, которое вы затем вставляете в свой div? Если вы просто заменяете содержимое HTML в 'DivIDHere', нет причин, по которым вы не сможете его снова и снова заменить. Если вы уничтожаете div, который вы выбираете, это будет проблемой. – showdev

ответ

3

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

Подробнее о том, как его использовать: http://docs.mathjax.org/en/v1.1-latest/typeset.html

Например, MathJax.Hub.Queue(["Typeset",MathJax.Hub,"previewdiv"]); повторно обновил содержимое элемента HTML с идентификатором previewdiv после того, как вы обновите его содержимое, используя ваш вызов jQuery.

+1

УДИВИТЕЛЬНЫЙ! Спасибо, это сработало. Вот код, который я использовал. 'var divML = document.getElementById (" preview "); MathJax.Hub.Queue (["Typet", MathJax.Hub, divML]); ' Еще раз спасибо! – Ronak

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