Как вызвать функцию JavaScript, когда «Processing Math» в MathJax достигает 100% - PullRequest
9 голосов
/ 08 января 2011

Я хотел бы вызвать функцию javascript Print(), когда библиотека js MathJax завершит обработку посещенной веб-страницы.

В данный момент функция Print() запускается с использованием onload, но, похоже, она останавливает задачу MathJax для обработки по математике (демо здесь );пользователям нужно закрыть всплывающее окно «Печать» в браузере, чтобы MathJax завершил свою обработку.

Я хотел бы иметь возможность вызывать Print() только тогда, когда обработка Math в MathJax достигает 100%.
Есть идеи?

Ответы [ 2 ]

12 голосов
/ 09 января 2011

Вставьте команду Print в очередь обработки MathJax, чтобы она вызывалась после того, как MathJax завершит набор текста страницы. Например.,

MathJax.Hub.Queue(Print);

или

MathJax.Hub.Queue(function () {
  // do stuff here
  Print();
});

См. Документацию на

http://www.mathjax.org/resources/docs/?queues.html#the-mathjax-processing-queue

для более подробной информации.

2 голосов
/ 09 января 2011

Область сообщений MathJax имеет задержку, прежде чем она будет удалена, так что вы действительно можете прочитать ее.Вызов Print() явно блокирует JavaScript, который удалил бы сообщение.Поэтому вам нужно добавить собственную задержку перед запуском Print().Я думаю, что задержка сообщения составляет 600 мс, поэтому если вы измените свой

MathJax.Hub.Queue(Print);

вызов на

MathJax.Hub.Queue(
  ["Delay",MathJax.Callback,700],
  Print
);

, то это должно задержать ваш Print() вызов до тех пор, пока сообщение не будет удалено.

Давиде

...