Heim  >  Artikel  >  Datenbank  >  Wie gehe ich mit Druckereignissen über Browser hinweg ohne onbeforeprint() und onafterprint() um?

Wie gehe ich mit Druckereignissen über Browser hinweg ohne onbeforeprint() und onafterprint() um?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 00:11:02652Durchsuche

How to Handle Printing Events Across Browsers Without onbeforeprint() and onafterprint()?

Alternative zu onbeforeprint() und onafterprint() für browserübergreifende Druckereignisse

Die Ereignisse onbeforeprint() und onafterprint() werden vom Internet Explorer unterstützt, aber sie Es mangelt an Cross-Browser-Kompatibilität. In diesem Artikel wird ein alternativer Ansatz untersucht, der modernere und weithin unterstützte Technologien nutzt.

Um eine browserunabhängige Lösung zum Abfangen von Druckereignissen zu implementieren, sollten Sie die Verwendung einer Kombination aus der window.matchMedia-API und window.onbeforeprint oder window in Betracht ziehen. onafterprint. Mit window.matchMedia können Sie erkennen, wann bestimmte CSS-Medienabfragen, wie z. B. Drucken, erfüllt werden.

Hier ist ein Beispielcode-Snippet, das diesen Ansatz veranschaulicht:

<code class="javascript">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);
}</code>

Durch die Kombination von matchMedia und onbeforeprint /onafterprint bietet diese Lösung eine browserübergreifende Möglichkeit, Druckereignisse zu erkennen und darauf zu reagieren. Beachten Sie, dass in einigen Browsern je nach Druckverhalten mehrere Aufrufe von beforePrint() und afterPrint() auftreten können.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Druckereignissen über Browser hinweg ohne onbeforeprint() und onafterprint() um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn