Cross-Browser onbeforeprint() and onafterprint() Solution
Kesan apabila halaman web sedang dicetak merentas pelbagai penyemak imbas telah menjadi satu cabaran pada masa lalu kerana ketiadaan pendekatan bersatu. Secara tradisinya, Internet Explorer menyediakan acara onbeforeprint() dan onafterprint() untuk tujuan ini, tetapi pelayar lain tidak mempunyai fungsi yang setara. Walau bagaimanapun, kemajuan terkini telah memperkenalkan kemungkinan baharu.
Menggunakan window.matchMedia
Banyak penyemak imbas moden kini menyokong API window.matchMedia, yang membolehkan pengesanan media CSS perubahan pertanyaan. Dengan menggunakan window.matchMedia bersama-sama dengan window.onbeforeprint/window.onafterprint, penyelesaian silang penyemak imbas boleh dicapai.
Coretan kod berikut menunjukkan pelaksanaan:
if ('matchMedia' in window) { // Chrome, Firefox, and IE 10 support mediaMatch listeners window.matchMedia('print').addListener(function(media) { if (media.matches) { beforePrint(); } else { // Fires immediately, so wait for the first mouse movement $(document).one('mouseover', afterPrint); } }); } else { // IE and Firefox fire before/after events $(window).on('beforeprint', beforePrint); $(window).on('afterprint', afterPrint); }
Faedah dan Kaveat
Pendekatan ini menawarkan penyelesaian silang penyemak imbas untuk mengesan permintaan cetakan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa sesetengah penyemak imbas mungkin mencetuskan berbilang panggilan ke beforePrint() dan afterPrint(), yang berpotensi membawa kepada tingkah laku yang tidak diingini. Oleh itu, adalah penting untuk mempertimbangkan dengan teliti keperluan pemprosesan sebagai tindak balas kepada acara cetakan.
Sumber Lanjut
Untuk mendapatkan maklumat dan contoh lanjut, rujuk sumber luaran berikut:
Atas ialah kandungan terperinci Bagaimana Mengesan Permintaan Cetakan Merentasi Berbilang Pelayar dengan Amanah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!