2011-01-08 25 views
9

Tôi muốn gọi hàm javascript Print() khi thư viện js MathJax kết thúc để xử lý trang web đã truy cập.Cách kích hoạt chức năng javascript khi "Xử lý Toán" trong MathJax đạt 100%

Hiện tại, chức năng Print() được kích hoạt bằng cách sử dụng onload nhưng dường như dừng tác vụ Xử lý toán học của MathJax (demo here); người dùng cần loại bỏ cửa sổ Print-up của trình duyệt để MathJax kết thúc quá trình xử lý của nó.

Tôi muốn có thể gọi Print() ngay khi Xử lý toán học trong MathJax đạt 100%.
Bất kỳ ý tưởng nào?

Trả lời

12

Đẩy lệnh In lên hàng đợi xử lý MathJax để nó sẽ được gọi sau khi MathJax kết thúc sắp xếp trang. Ví dụ:

MathJax.Hub.Queue(Print); 

hoặc

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

Xem tài liệu tại

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

để biết thêm chi tiết.

+0

@Davide gần như :), nó hoạt động nhưng khi hộp thoại máy in bật lên Toán xử lý: 100% không biến mất. Bạn có biết cách nào để loại bỏ nó không? – systempuntoout

+0

Hãy chắc chắn rằng bạn lấy OUT handler onload cho cơ thể, mà cũng gọi Print. Nó đang được kích hoạt trước khi MathJax được nạp (và trước khi In được xếp hàng qua MathJax. –

+0

Trang demo của bạn được liên kết với thư gốc của bạn vẫn có onload = "Print()" trên thẻ BODY. Và tôi không thấy MathJax.Hub.Queue() gọi. Bạn đang thử nghiệm trên một trang khác nhau? Ngoài ra, tôi không chắc chắn lý do tại sao bạn sử dụng javascripts/mathjax.js thay vì chỉ tải javascripts/MathJax/MathJax.js trực tiếp. Bạn sẽ cần phải thêm MathJax.Hub.Queue() gọi đến thói quen này để đảm bảo MathJax sẽ có sẵn khi cuộc gọi được thực hiện –

2

Khu vực tin nhắn MathJax có độ trễ trước khi nó bị xóa để bạn có thể thực sự đọc nó. Cuộc gọi Print() dường như chặn javascript có thể đã xóa tin nhắn. Vì vậy, bạn cần phải thêm một sự chậm trễ của riêng bạn trước khi chạy Print(). Tôi nghĩ rằng sự chậm trễ thông điệp là 600 ms, vì vậy nếu bạn thay đổi cuộc gọi

MathJax.Hub.Queue(Print); 

của bạn để

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

sau đó rằng nên trì hoãn Print() cuộc gọi của bạn cho đến khi sau khi thông điệp được lấy ra.

Davide

+0

hoạt động hoàn hảo, nhờ – systempuntoout

+0

Đừng quên xóa lệnh 'MathJax.Hub.Startup.onload();' khỏi thẻ script của bạn để tải MathJax. Điều này chỉ khi bạn chèn MathJax vào một trang * sau khi nó được tải, không phải khi bạn tải nó theo cách tiêu chuẩn thông qua một thẻ tập lệnh trong đầu tài liệu. –

Các vấn đề liên quan