it-swarm-vi.com

thay thế window.addEvent ('dom yet', ...)

Tôi sử dụng một phiên bản phù hợp của mã google prettify trên trang của mình, điều này cho phép tôi làm nổi bật mã Mathicala . Để tiêm đúng mã js cần thiết, plugin JPrettify khá tiện dụng. Vì plugin này dường như không còn chính thức nữa và vì dù sao tôi cũng cần Tweak nó, nên tôi đã thiết lập phiên bản của riêng mình trên GitHub .

Hôm qua, tôi đã chỉ ra thực tế rằng nó không hoạt động trong Joomla 3 và sau khi gỡ lỗi, chúng tôi phát hiện ra rằng hàm PrettyPrint không được gọi khi nó được chèn như sau đầu html:

window.addEvent('domready', function() { prettyPrint();});

Đây là cách họ JPrettify (dòng 53) thực hiện. Sau một số googling, hóa ra vấn đề là thư viện mootools . Chúng tôi đã giải quyết vấn đề bằng cách chèn tĩnh

<body onload="PrettyPrint()">

vào tập tin php mẫu chính, tất nhiên đó không phải là cách đúng đắn.

Câu hỏi: Để làm cho plugin hoạt động thông qua các phiên bản khác nhau của Joomla, phương thức tốt nhất để gọi PrettyPrint() là gì?

6
halirutan

Thay vì thực hiện tải cơ thể, những điều sau đây nên hoạt động:

$(document).ready(function() {
    PrettyPrint();
});

Hoặc trong số bạn muốn sử dụng Javascript để xác định khi nào hàm được gọi, bạn có thể sử dụng:

window.onload = function() {
    PrettyPrint();
};
2
Lodder

Có một công việc đang diễn ra trong Joomla 3 để loại bỏ các tập lệnh dựa trên Mootools và thay thế chúng bằng các tập lệnh jQuery. Vấn đề chính tại sao mã của bạn thất bại là bạn không tự tải Mootools. Trong các phiên bản trước của Joomla, nó có thể đã được tải bởi bố cục chính hoặc mô-đun, và bây giờ nó không còn được tải nữa vì các tập lệnh không cần nó nữa.

Vì vậy, nếu bạn cần nó cho mô-đun của mình, hãy tải nó bằng cách sử dụng JHtmlBehavior::famework() ( http://api.j Joomla.org/cms-3/groupes/JHtmlBehavior.html#method_framework ).

Điều tương tự cũng áp dụng nếu bạn viết lại tập lệnh của mình để sử dụng jQuery. Đừng tin vào nó đang được tải, hãy nói với Joomla rằng bạn cần nó. Joomla sẽ quan tâm rằng nó chỉ được tải một lần. Để tải jQuery, bạn sẽ sử dụng JHtmlJquery::framework() ( http://api.j Joomla.org/cms-3/groupes/JHtmlJquery.html#method_framework ).

2
Bakual