it-swarm-id.com

window.addEvent ('domready', ...) alternatif

Saya menggunakan versi prettify kode google yang disesuaikan pada halaman saya yang memungkinkan saya menyorot kode Mathematica . Untuk injeksi kode js yang benar, plugin JPrettify cukup praktis. Karena plugin ini tampaknya tidak lagi tersedia secara resmi dan karena saya perlu men-twaknya, saya mengatur versi saya sendiri di GitHub .

Kemarin, saya menunjuk ke fakta bahwa itu tidak berfungsi di Joomla 3 dan setelah beberapa debugging kami menemukan bahwa fungsi PrettyPrint tidak dipanggil ketika dimasukkan sebagai berikut di kepala html:

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

Inilah yang mereka lakukan JPrettify (baris 53) melakukannya. Setelah beberapa googling, ternyata masalahnya adalah perpustakaan mootools . Kami memecahkan masalah dengan memasukkan secara statis

<body onload="PrettyPrint()">

ke dalam file templat php utama, yang tentu saja bukan cara yang tepat untuk pergi.

Pertanyaan: Untuk membuat plugin berfungsi melalui versi Joomla yang berbeda, apa metode terbaik untuk memanggil PrettyPrint()?

6
halirutan

Alih-alih melakukan body onload, yang berikut ini harus bekerja:

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

Atau Anda lebih suka menggunakan Javascript untuk menentukan kapan fungsi dipanggil, Anda bisa menggunakan:

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

Ada pekerjaan yang sedang berlangsung dalam Joomla 3 untuk menghapus skrip berbasis Mootools dan menggantinya dengan yang jQuery. Masalah utama mengapa kode Anda gagal adalah bahwa Anda tidak memuat Mootools sendiri. Dalam versi Joomla sebelumnya, mungkin telah dimuat oleh tata letak utama atau modul, dan sekarang tidak dimuat karena skrip tidak membutuhkannya lagi.

Jadi jika Anda membutuhkannya untuk modul Anda, muat menggunakan JHtmlBehavior::famework() ( http://api.joomla.org/cms-3/classes/JHtmlBehavior.html#method_framework ).

Hal yang sama berlaku jika Anda menulis ulang skrip Anda untuk menggunakan jQuery. Jangan mengandalkan itu dimuat, katakan Joomla bahwa Anda membutuhkannya. Joomla akan memastikan bahwa itu hanya dimuat satu kali. Untuk memuat jQuery, Anda akan menggunakan JHtmlJquery::framework() ( http://api.joomla.org/cms-3/classes/JHtmlJquery.html#method_framework ).

2
Bakual