Bạn không thể chiếm quyền điều khiển các lệnh in trong trình duyệt, nhưng bạn có thể chiếm quyền điều khiển các phím tắt (mặc dù tôi không muốn giới thiệu nó) để khi người dùng in bằng cách sử dụng ctrl/cmd + p
, nó chuyển hướng đến một tệp PDF (hoặc thực hiện điều gì đó khác). Tuy nhiên, đây là một bãi chứa khả năng sử dụng, có lẽ bạn chỉ cần tạo một liên kết lớn có nội dung "Bản in được" và liên kết nó với tệp PDF (hoặc phiên bản của trang sử dụng CSS thân thiện với bản in).
Một lựa chọn tốt khác là chỉ cần xác định một số quy tắc cho loại phương tiện print
trong tệp CSS của bạn, sau đó trình duyệt sẽ áp dụng những điều đó khi người dùng in, không có bất kỳ hack hoặc javascript nào cả.
Nhưng kể từ khi bạn hỏi tôi đã tạo một tập lệnh chặn nhỏ phím tắt cho lệnh in. Đó là loại khó khăn vì các phím lệnh mac, nhưng cái gì đó như:
var cmd = false;
$(document).on('keydown', function(e) {
if(detectMacCommand(e.which)) {
cmd = true;
return;
}
// now detect print (ctr/cmd + p)
if (e.which == 80 && (e.ctrl || cmd)) {
e.preventDefault();
alert('redirect to PDF');
}
}).on('keyup', function(e) {
if(detectMacCommand(e.which)) {
cmd = false;
return;
}
});
function detectMacCommand(key) {
return ($.browser.mozilla && key == 224 ||
$.browser.opera && key == 17 ||
$.browser.webkit && (key == 91 || key == 93));
}
Đó là khá mát mẻ, nhưng không sử dụng nó :)
Bạn có thể thực hiện việc này thông qua PHP. Không phải JS. http://webdesign.about.com/od/php/ht/force_download.htm Trong JS, bạn đã gửi các tiêu đề tập tin, vì vậy bạn không thể làm những thứ kỳ lạ như thế này. – Manishearth
1. Thao tác này sẽ tải xuống tệp, không in; 2. Ngay cả khi tải pdf, nó sẽ mở nó không in. – Googlebot
Rất tiếc, tôi đã đọc sai câu hỏi. Một thứ có thể hoạt động (dunno) đang tải bản pdf trong khung nội tuyến và gọi in của iframe. Nhưng tôi không chắc chắn bao nhiêu DOM được bảo tồn. – Manishearth