2011-01-08 13 views
9

Vorrei chiamare una funzione javascript Print() quando la libreria js MathJax termina per elaborare la pagina Web visitata.Come attivare una funzione javascript quando "Elaborazione matematica" in MathJax raggiunge il 100%

Al momento la funzione Print() viene attivata utilizzando onload ma sembra interrompere l'attività Matematica di elaborazione di MathJax (demo here); gli utenti devono chiudere il pop-up Stampa del browser per consentire a MathJax di terminare l'elaborazione.

Vorrei essere in grado di chiamare Print() proprio quando Elaborazione matematica in MathJax raggiunge il 100%.
Qualche idea?

risposta

12

Spingere il comando Stampa sulla coda di elaborazione MathJax in modo che venga chiamato dopo che MathJax ha terminato la composizione della pagina. Per esempio,

MathJax.Hub.Queue(Print); 

o

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

leggi la documentazione

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

per maggiori dettagli.

+0

@Davide quasi :), funziona, ma quando la finestra di pop-up della stampante per la matematica elaborazione: 100% non scompare. Conosci qualche modo per liberartene? – systempuntoout

+0

Assicurarsi di estrarre la maniglia di caricamento del corpo, che chiama anche Stampa. Viene attivato prima che MathJax sia caricato (e prima della Stampa in coda tramite MathJax. –

+0

La pagina della demo collegata al messaggio originale ha ancora onload = "Stampa()" sul tag BODY. E non vedo il Chiamata MathJax.Hub.Queue(). Stai provando su una pagina diversa? Inoltre, non sono sicuro del motivo per cui usi javascripts/mathjax.js piuttosto che caricare javascripts/MathJax/MathJax.js direttamente. Dovrai aggiungere la chiamata MathJax.Hub.Queue() a questa routine per assicurarsi che MathJax sia disponibile quando viene effettuata la chiamata –

2

L'area del messaggio MathJax ha un ritardo prima che venga rimossa in modo che sia effettivamente possibile leggerla. La chiamata Print() blocca apparentemente il javascript che avrebbe rimosso il messaggio. Quindi è necessario aggiungere un ritardo prima di eseguire Print(). Credo che il ritardo messaggio è di 600 ms, quindi se si cambia la chiamata

MathJax.Hub.Queue(Print); 

a

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

allora che dovrebbe ritardare il vostro Print() chiamata fino a dopo che il messaggio è stato rimosso.

Davide

+0

ha funzionato perfettamente, grazie – systempuntoout

+0

Non dimenticare di rimuovere la chiamata 'MathJax.Hub.Startup.onload();' dal tag script che carica MathJax. Questo solo per quando si inserisce MathJax in una pagina * dopo * viene caricato, non quando lo si carica nel modo standard attraverso un tag di script nel capo del documento. –

Problemi correlati