2010-08-28 29 views
7

Sự cố lạ. Tôi có một biểu mẫu web đơn giản nơi người dùng có thể điền vào văn bản và chọn/bỏ chọn một số hộp kiểm. Khi điều này được in ra bản pdf hoặc giấy (hoặc xem trước bản in) trong IE (7 hoặc 8), các hộp kiểm sẽ được in không thay đổi. Ví dụ. người dùng đặt một kiểm tra, điều này được in bỏ chọn ... hoặc với một hộp kiểm tra trước với người dùng không được kiểm tra, được in kiểm tra.Trang in hiển thị hộp kiểm không thay đổi trong IE với DocType

Tương tự với radio.

Chỉ khi tôi xóa hoàn toàn DocType, IE in chính xác. Nhưng tôi cần sử dụng XHTML-strict.

Đây là một ví dụ đơn giản mà bị lỗi trong IE:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl-NL"> 
<body> 
<input type='checkbox' name='y'/><br/> 
<input type='radio' name='x'/><br/> 
</body> 
</html> 

Không làm việc với bất kỳ loại tài liệu được tôi thử nghiệm (lỏng hoặc HTML4).

Bất kỳ ai có ý tưởng cách giải quyết vấn đề này?

Rất cám ơn, Michael

+1

Xóa DOCTYPE sẽ chỉ đưa trình duyệt vào chế độ quirks. Tôi nghiêm túc nghi ngờ bạn sẽ có thể kiểm soát cách trình duyệt hiển thị các trường biểu mẫu để in, nhưng có thể ai đó biết một mẹo. – Pointy

+0

Vâng, tôi biết. Nhưng sẽ có nhiều người dùng IE muốn hộp kiểm của họ được in chính xác, tôi đoán vậy. – Michael

Trả lời

5

Hóa ra là một lỗi IE8: http://webbugtrack.blogspot.com/2009/04/bug-444-ie8-printing-issues-in.html

Nó không có vấn đề này với "Compatibility View" bật.

Một giải pháp là thêm như sau trong tiêu đề:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

nào kinda phá vỡ xác nhận và đưa ra một vấn đề khi IE9 đi lên.

khác "nice" workaround với JavaScript cũng làm việc:

<input type='checkbox' name='y' onclick='SetCheck(this)'/> 
..... 

function SetCheck(el) 
{ 
    if(el) 
    { 
    if(el.checked) el.setAttribute('checked','checked'); 
    else   el.removeAttribute("checked"); 
    } 
} 

Nhưng khi bạn không thể dựa vào javascript được bật, bạn đang hơi say bởi Microsoft.

+3

Không phải một ngày trôi qua khi chúng tôi không bị Microsoft lừa gạt. – Roel

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