打印页面显示IE中带有DocType的未更改复选框

时间:2010-08-28 16:15:48

标签: internet-explorer checkbox printing

奇怪的问题。我有一个简单的webform,用户可以在其中填写文本并选中/取消选中一些复选框。当在IE(7或8)中将其打印为pdf或纸张(或打印预览)时,复选框将保持不变。例如。用户设置一个支票,打印未选中...或者取消选中未选中的预先复选框,打印检查。

收音机也一样。

仅当我完全删除DocType时,IE才会正确打印。但我需要使用XHTML-strict。

这是一个在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>

不适用于我测试的任何doctype(loose或html4)。

任何人都知道如何解决这个问题?

非常感谢, 迈克尔

1 个答案:

答案 0 :(得分:5)

原来是一个IE8错误: http://webbugtrack.blogspot.com/2009/04/bug-444-ie8-printing-issues-in.html

“兼容性视图”打开时没有出现此问题。

解决方案是在标题中添加以下内容:

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

当IE9出现时,哪种打破验证并出现问题。

JavaScript的其他“好”解决方法也适用:

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

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

但是,如果你不能依赖javascript打开,你就会被微软搞砸了。