2012-11-28 13 views
6

Używam drukowania w moim projekcie (przy użyciu HTML i javascript). W mozilla onbeforeprint i onafterprint działa poprawnie, ale nie działa w chrome.onbeforeprint i onafterprint nie działają w Chrome i IE?

+1

Chrome [nie obsługuje tych zdarzeń] (https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeprint#Browser_compatibility). – pimvdb

+0

@pimvdb Więc jak mogę te zdarzenia realizować w chrome. Czy istnieje zdarzenie równoważne dla chrome? –

Odpowiedz

-1

W przeglądarce Chrome nie działa przed nadrukiem & onAfterPrint.

Ale można ograniczyć stronę wydruku za pomocą mediów drukowanych css

Przykład

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

Ten CSS jest to w nagłówku strony.

css posiadające następujące style

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

co działa dla Chrome, aby sprawdzić 'matchmedia' w oknie '', jak w:

   if ('matchMedia' in window) { 
        window.matchMedia('print').addListener(function (media) { 
        //do before-printing stuff 
        }); 
       } else { 
        window.onbeforeprint = function() { 
        //do before-printing stuff 
        } 
       } 
+2

Wydaje się, że detektor został wywołany dwukrotnie podczas drukowania dokumentu (za pomocą metody addListener). Argument media wydaje się nie być bardzo różny w tych dwóch połączeniach, z wyjątkiem sygnatury czasowej ... –

+2

media.matches będą "prawdziwe" przed drukowaniem, a następnie fałszywe. – sabof

1

Chrome nie obsługuje te zdarzenia. Zamiast tego obsługuje "window.matchMedia". Istnieje również bug in Chrome, który uniemożliwia wydrukowanie wszystkich stron. Z tego powodu sugeruję dodanie przycisku drukowania do swojej strony internetowej i poproszenie użytkowników o użycie przycisku zamiast drukowania w menu 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(); 

} 
0

Szybka zmiana, ponieważ wsparcie imprez poligraficznych has improved a lot

  • Chrome 63, uwolnienia w grudniu 2017 roku, wspiera go source
  • Opera 50 oraz
  • Krawędź wspiera go od początku
  • nawet stara wersja 6 z IE (6 !!) obsługuje to
Powiązane problemy