2012-02-13 50 views
8

Tôi nghĩ câu trả lời cho điều này gần như chắc chắn là "không", bởi vì tôi đã thử nghiệm một chút và tìm kiếm xung quanh, nhưng có bất kỳ mẹo nào để phát hiện xem window.print() thậm chí có thể hoạt động từ bên trong trang (ví dụ, từ JavaScript)? Tôi biết rằng ngay cả trên một máy tính để bàn/máy tính xách tay nó sẽ không bao giờ có thể biết liệu có một máy in được cấu hình trên hệ thống, ví dụ, nhưng ít nhất là trình duyệt sẽ đưa ra một hộp thoại in.Xác định xem trình duyệt có hỗ trợ in ấn

Điện thoại Android của tôi có chức năng window.print() nhưng không có gì đáng ngạc nhiên.

Một lần nữa tôi yêu cầu chủ yếu là do đó là một câu hỏi hay về chủ đề này tại SO :-)

Trả lời

5

Đáng tiếc là nó trông giống như một không có. Hàm window.print() không phải là một phần của đặc tả EMCAScript. Điều này có nghĩa là không có yêu cầu cho nó là một phần của ngôn ngữ JavaScript, và không có tài liệu thích hợp để thực hiện nó. Đó là hành vi không xác định và vì vậy thử nghiệm cho nó trông rất khó khăn.

Nguồn:

EDIT:

kịch bản chút dễ thương, tôi đã viết để kiểm tra trình duyệt của tôi, chỉ cần kiểm tra các chức năng in tồn tại và sau đó yêu cầu để in:

if(window.print) { 
    if(confirm('I can print. Would you like to?')) 
     window.print() 
} 
+0

Vâng đó là những gì tôi đã quyết định khá nhiều. Vâng có lẽ bây giờ điều này sẽ phục vụ như là một điểm tốt tham khảo quá :-) – Pointy

+2

Tôi cũng đã viết này để kiểm tra trình duyệt của tôi: http://jsfiddle.net/zdY4d/4/ – Jivings

+0

@Jivings thêm fiddle để câu trả lời của bạn ... – powtac

5

Phương pháp print() là đồng bộ. Điều này làm cho nó có thể làm hậu quả để quyết định một hộp thoại in đã được hiển thị

var start = +new Date(); 
window.print(); 
var delta = + new Date() - start; 
console.log(delta); 
if (delta > 100) { console.log('It worked'); } 
+0

Mặc dù người dùng phải cố gắng in để kiểm tra xem anh ấy có thể in :) không. Dù sao, bạn có thể sử dụng tập lệnh này và hiển thị thông báo nếu việc in không thành công (không phải delta> 100). – Fernando

+0

Tôi giả định rằng nếu một trình duyệt định nghĩa window.print (để tránh các script phá vỡ mà cố gắng gọi nó) nhưng không thực sự làm bất cứ điều gì mà nó sẽ mất ít hơn 100ms để xử lý dòng mã tiếp theo. Tôi thích nó. Tôi chỉ ước rằng có một cách để kiểm tra w/o thực sự gọi nó! Đây là giải pháp tốt nhất mà tôi đã nhìn thấy được nêu ra, mặc dù. – jinglesthula

+1

BTW, trong trường hợp có ai đó thắc mắc về dấu cộng đó, http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-new-date – jinglesthula

Các vấn đề liên quan