Solution multi-navigateurs onbeforeprint() et onafterprint()
Détecter le moment où une page Web est imprimée sur différents navigateurs a été un défi dans le passé en raison de l'absence d'une approche unifiée. Traditionnellement, Internet Explorer fournissait les événements onbeforeprint() et onafterprint() à cet effet, mais les autres navigateurs ne disposaient pas de fonctionnalités équivalentes. Cependant, des progrès récents ont introduit de nouvelles possibilités.
Utilisation de window.matchMedia
De nombreux navigateurs modernes prennent désormais en charge l'API window.matchMedia, qui permet la détection des médias CSS. modifications de requête. En utilisant window.matchMedia en conjonction avec window.onbeforeprint/window.onafterprint, une solution multi-navigateurs peut être obtenue.
L'extrait de code suivant illustre l'implémentation :
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); }
Avantages et mises en garde
Cette approche offre une solution multi-navigateurs pour détecter les impressions demandes. Cependant, il est essentiel de noter que certains navigateurs peuvent déclencher plusieurs appels à beforePrint() et afterPrint(), conduisant potentiellement à un comportement indésirable. Par conséquent, il est crucial d’examiner attentivement les exigences de traitement en réponse à l’événement d’impression.
Autres ressources
Pour plus d’informations et d’exemples, reportez-vous à la ressource externe suivante :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!