Ну, я нашел решение ... и оно выглядит примерно так:
- Сначала присвойте уникальные номера страницам. Поскольку эти страницы генерируются в PHP, это можно сделать с помощью
uniqid()
.
Назначьте следующую функцию событию pageshow
:
$('#page_id').live('pageshow', function(event, ui) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'path_to_mathjax/MathJax.js';
script.onload = callback;
document.getElementsByTagName('head')[0].appendChild(script);
});
Это загружает MathJax и вставляет его в DOM - этот скрипт должен включать в элемент страницы. Также обратите внимание, что мы упоминаем «обратный вызов». Это будет вызвано при загрузке скрипта.
Эта функция (обратный вызов) должна выходить за пределы любых страниц. Это предотвратит его повторное включение после загрузки новой страницы.
var mathjax_loaded = false;
function callback()
{
if(mathjax_loaded)
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
else
{
MathJax.Hub.Startup.onload();
mathjax_loaded = true;
}
}
Здесь много всего. Прежде всего, мы отслеживаем, был ли этот обратный вызов вызван один раз. Если нет, мы говорим MathJax проанализировать страницу, как если бы она была вызвана из события window.onload
. Если это уже произошло (и мы на новой странице), тогда нам просто нужно запустить MathJax через новую страницу.
Я, вероятно, что-то упускаю, и, возможно, есть лучший способ сделать это. Но я не нашел другого способа, который бы работал.