Tôi đang sử dụng in trong dự án của mình (Sử dụng HTML và javascript). Trong mozilla onbeforeprint và onafterprint đang hoạt động đúng nhưng không hoạt động trong chrome.onbeforeprint và onafterprint không hoạt động trong Chrome và IE?
Trả lời
Chrome doesn't have onbeforeprint.
Các phương pháp ưa thích để làm điều này là sử dụng print media specific stylesheets.
Nếu bạn hoàn toàn phải phát hiện Print operations with javascript cross browser, điều này có vẻ đầy hứa hẹn, nhưng tôi chưa tự mình thử.
điều này đã cứu mạng tôi, cảm ơn Ryan. Tôi đã sử dụng @media print {...} để in trang, nhưng bằng cách nào đó css đã bị bỏ qua, vì vậy tôi phải thông qua cách js. điều này làm việc như một sự quyến rũ đối với tôi. –
Trong Chrome không hoạt động trước khi in & onAfterPrint.
Nhưng bạn có thể giới hạn trang in bằng cách sử dụng css phương tiện in
Ví dụ
<link rel="stylesheet" href="print.css" type="text/css" media="print" />
css này được bao gồm trong phần đầu của trang.
phong cách Các css có sau
#header, #menu, #entry-content, .noprint {display: none;}
gì làm việc cho Chrome là để kiểm tra cho 'matchmedia' trong 'cửa sổ' như trong:
if ('matchMedia' in window) {
window.matchMedia('print').addListener(function (media) {
//do before-printing stuff
});
} else {
window.onbeforeprint = function() {
//do before-printing stuff
}
}
Trình nghe có vẻ được kích hoạt hai lần khi tài liệu được in (sử dụng addListener). Đối số truyền thông dường như không khác nhiều trong hai cuộc gọi đó, ngoại trừ dấu thời gian ... –
media.match sẽ là 'true' trước khi in và sau đó là false. – sabof
Chrome không hỗ trợ những sự kiện đó. Thay vào đó, nó hỗ trợ 'window.matchMedia'. Ngoài ra còn có một bug in Chrome ngăn nó in tất cả các trang. Vì lý do này, tôi khuyên bạn nên thêm nút in vào trang web của bạn và yêu cầu người dùng sử dụng nút thay vì in qua 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();
}
Cập nhật nhanh chóng, bởi vì sự ủng hộ của các sự kiện in ấn has improved a lot
- Chrome 63, phát hành trong tháng 12 năm 2017, hỗ trợ nó source
- Opera 50 cũng
- Cạnh hỗ trợ nó kể từ đầu
- thậm chí phiên bản cũ 6 của IE (6 !!) hỗ trợ nó
- 1. innerHTML hoạt động trong IE và Firefox, nhưng không phải Chrome
- 2. CSS không hoạt động trên các trang HTTPS trong Chrome và IE
- 3. onunload không hoạt động trong Chrome và safari
- 4. Kenburner Slider không hoạt động trong IE
- 5. $ .getJSON không hoạt động trong IE
- 6. IE Comments Conditional và Chrome/Firefox
- 7. css không hoạt động trong chrome (linux và windows)
- 8. chuyển đổi webkit không hoạt động trong chrome và safari
- 9. . Không hoạt động trong IE
- 10. Biểu đồ Google: Biểu đồ đường: Không hiển thị trong IE và Firefox nhưng hoạt động trong chrome
- 11. Chức năng Javascript và các thông số mặc định, không làm việc trong IE và Chrome
- 12. Đối mặt với một vấn đề đối tượng yêu cầu lỗi trong IE 8 và hộp đèn không hoạt động trong IE 8 và IE 7 một mình
- 13. Kích thước nền IE không hoạt động
- 14. Tùy chọn bộ nhớ cache của jQuery .ajax không hoạt động trong Firefox và Chrome?
- 15. Onclick chọn không hoạt động trong IE
- 16. $ .getJson không hoạt động trong IE
- 17. IE e.target.id không hoạt động
- 18. new Date() hoạt động khác nhau trong Chrome và Firefox
- 19. nút radio biến mất trong ie và chrome
- 20. Tùy chọn ẩn jQuery không hoạt động trong IE và Safari
- 21. sự kiện không được định nghĩa trong FireFox, nhưng ok trong Chrome và IE
- 22. Chức năng tách JavaScript không hoạt động trong IE
- 23. Con trỏ: tay không hoạt động trên chrome và mozilla nhưng hoạt động trên tức là
- 24. Phiên PHP không hoạt động với IE
- 25. jQuery trong iframe không hoạt động trong IE
- 26. Tải xuống tệp AWS s3 không hoạt động trong Chrome (Hoạt động tốt với IE, Mozilla, Safari)
- 27. Tính năng này hoạt động trong Chrome chứ không phải IE, tại sao?
- 28. 127.0.0.1 Sẽ không hoạt động trong IE 11
- 29. & dấu đầu dòng; không hoạt động trong IE?
- 30. checked = "checked" không hoạt động trong chrome
Chrome [dường như không hỗ trợ cho các sự kiện này] (https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeprint#Browser_compatibility). – pimvdb
@pimvdb Vậy làm thế nào tôi có thể đạt được những sự kiện này trong chrome. Có sự kiện tương đương nào cho chrome hay không. –