Estoy utilizando la impresión en mi proyecto (Utilizando HTML y javascript). En mozilla eventos onbeforeprint y onafterprint está funcionando correctamente, pero no funciona en chrome.

Chrome parece que no tiene soporte para estos eventos.
Así que ¿cómo puedo obtener estos eventos en chrome. Es allí cualquier acontecimiento equivalente para chrome.

OriginalEl autor Shanky_Richer | 2012-11-28

6 Comentarios

  1. 9

    Lo que funciona para Chrome es comprobar ‘matchmedia’ en ‘la ventana’, como en:

                    if ('matchMedia' in window) {
                        window.matchMedia('print').addListener(function (media) {
                        //do before-printing stuff
                        });
                    } else {
                        window.onbeforeprint = function () {
                        //do before-printing stuff
                        }
                    }
    El oyente parece que se activa dos veces cuando se imprime el documento (utilizando el método addListener). Los medios de comunicación argumento parece no ser muy diferente en esos dos llamadas, excepto para la marca de tiempo…
    los medios de comunicación.los partidos se true antes de la impresión, y la falsa después.

    OriginalEl autor samiup

  2. 1

    Chrome no tiene eventos onbeforeprint.

    El método preferido para hacerlo es utilizar imprimir los medios de comunicación específicas de las hojas de estilo.

    Si es absolutamente necesario para detectar Operaciones de impresión con javascript de los navegadores esto se ve prometedor, pero no he probado a mí mismo.

    esto me salvó la vida, gracias a Ryan. Yo estaba usando @media print { … } por página de impresión, pero de alguna manera el css estaba siendo ignorado, así que tengo a través de la js. este trabajó como un encanto para mí.

    OriginalEl autor Ryan

  3. 1

    Chrome no apoyo a esos eventos. En lugar de ello apoya»de la ventana.matchMedia‘. También hay un error en Chrome que impide que se imprima todas las páginas. Por esta razón, sugiero agregar un botón de impresión para su página web y pedir a los usuarios para utilizar el botón en lugar de imprimir a través del menú de Chrome.

    var beforePrint = function() {
        console.log("before");
    };
    var afterPrint = function() {
        console.log("after");
    };
    
    var launchedFromMenu = true;
    if (window.matchMedia) {
        var mediaQueryList = window.matchMedia('print');
        mediaQueryList.addListener(function(mql) {
            if (mql.matches) {
                if(launchedFromMenu) {
                    //https://bugs.chromium.org/p/chromium/issues/detail?id=571070
                    alert("There is a bug in Chrome/Opera and printing via the main menu does not work properly. Please use the 'print' icon on the page.");
                }
                beforePrint();
            } else {
                afterPrint();
            }
        });
    }
    
    //These are for Firefox
    window.onbeforeprint = beforePrint;
    window.onafterprint = afterPrint;
    
    function printPage() {
        window["beforePrint"]();
        launchedFromMenu = false;
        window.print();
    
    }

    OriginalEl autor Caner

  4. 0

    Rápida actualización, debido a que el soporte de impresión de los eventos ha mejorado mucho

    • Chrome 63, libera en diciembre de 2017, admite fuente
    • Ópera 50 así
    • Borde apoya desde el principio
    • incluso el viejo de la versión 6 de internet explorer (6!!) admite

    OriginalEl autor Feugy

  5. 0

    Esto funciona como Chrome, de 63 años, de acuerdo a su changelog.

    OriginalEl autor Charley B.

  6. -1

    En Chrome no funciona eventos onbeforeprint & onAfterPrint.

    Pero puede restringir la impresión de la página mediante el uso de css medios de comunicación impresos

    Ejemplo

    <link href="print.css" type="text/css" media="print" />

    Este css se incluyen en el encabezado de la página.

    El css de haber siguientes estilos

    #header, #menu, #entry-content, .noprint {display: none;}

    OriginalEl autor Nitin Karale

Dejar respuesta

Please enter your comment!
Please enter your name here