2011-01-08 13 views
9

Me gustaría llamar a una función javascript Print() cuando la biblioteca js MathJax termina de procesar la página web visitada.Cómo activar una función javascript cuando "Processing Math" en MathJax alcanza el 100%

Por el momento, la función Print() se desencadena usando onload pero parece detener la tarea de Matemáticas de procesamiento de MathJax (demo here); los usuarios deben descartar la ventana emergente Imprimir del navegador para que MathJax finalice su procesamiento.

Me gustaría poder llamar al Print() justo cuando Processing Math en MathJax alcanza el 100%.
¿Alguna idea?

Respuesta

12

Presione el comando Imprimir en la cola de procesamiento MathJax para que se invoque después de que MathJax termine de componer la página. Por ejemplo,

MathJax.Hub.Queue(Print); 

o

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

Consulte la documentación en

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

para más detalles.

+0

@Davide casi :), que funciona, pero cuando los pops-up de diálogo de impresión de la matemáticas de procesamiento: 100% no desaparece. ¿Conoces alguna forma de deshacerte de ella? – systempuntoout

+0

Asegúrese de sacar el dispositivo de carga de carga para el cuerpo, que también llama a Imprimir. Se está desencadenando antes de que se cargue MathJax (y antes de la impresión que está en cola a través de MathJax. –

+0

Su página de demostración vinculada a su mensaje original todavía tiene la onload = "Print()" en la etiqueta BODY. Y no veo el Llamada a MathJax.Hub.Queue(). ¿Estás probando en una página diferente? Además, no estoy seguro de por qué usas javascripts/mathjax.js en lugar de solo cargar javascripts/MathJax/MathJax.js directamente. Tendrás que agregar la llamada MathJax.Hub.Queue() a esta rutina para asegurarse de que MathJax estará disponible cuando se realice la llamada. –

2

El área de mensajes de MathJax tiene un retraso antes de que se elimine para que pueda leerlo. La llamada Print() aparentemente bloquea el javascript que habría eliminado el mensaje. Por lo tanto, debe agregar un retraso propio antes de ejecutar Print(). Creo que el retardo del mensaje es de 600 ms, lo que si cambia su llamada

MathJax.Hub.Queue(Print); 

a

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

entonces que debería retrasar su llamada Print() hasta después de que se elimina el mensaje.

Davide

+0

funcionó a la perfección, gracias – systempuntoout

+0

No se olvide de eliminar la llamada 'MathJax.Hub.Startup.onload();' de la etiqueta del script que carga MathJax. Esto solo ocurre cuando inserta MathJax en una página * después de * que se carga, no cuando lo carga de forma estándar a través de una etiqueta de script en el encabezado del documento. –

Cuestiones relacionadas