为了帮助打印,我正在动态生成iFrame,然后用一些内容填充它。这适用于PC和Mac上的IE6,IE8,Chrome和Firefox。问题是由于某些原因它在IE7上无法正常工作。
在IE7中,图像不显示;相反,他们显示为破碎的图像。查看时的结果相同。这很奇怪,因为就像我说的,它在IE6和IE8中运行良好。
有什么想法吗?我发布了一个愚蠢的副本here
这是源代码(如示例所示):
<!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">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>iframe print test</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
function printIFrameFunc(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.print();
return false;
}
function printfra() {
$("iframe#printIFrame").remove();
// Create an iframe which will be populated with the data to be printed...
$('body').append('<iframe id="printIFrame"></iframe>');
// !!! This next line commented so the iframe will be visible on the screen
//$("iframe#printIFrame").attr('style','position:absolute;left:-500px;top:-500px;');
// Don't do anything on the iframe until it's ready to go
if ($.browser.webkit)
$("iframe#printIFrame").ready(iframeloadedprint);
else
$("iframe#printIFrame").load(iframeloadedprint);
function iframeloadedprint() {
var printBody = $("iframe#printIFrame").contents().find('body');
printBody.html( $("#mainContainer").html() );
printIFrameFunc('printIFrame');
}
return false;
}
</script>
</head>
<body>
<div id="mainContainer">
<img src="dash.png" alt="test image" />
<a href="#" onclick="printfra();">Click here to print</a>
</div>
</body>
非常感谢任何帮助或建议!
答案 0 :(得分:0)
所以我无法理解这一点。
我通过实施不同的打印方式做了一些工作。由于我无法真正利用特殊样式表进行打印,因此我能够进行更改以适应。基本上当用户点击“打印”按钮时,javascript会测试它是什么浏览器。如果它是IE7,它遵循一条特殊的路径。如果是其他任何内容,则使用iframe方法。
IE7特殊路径主要涉及对页面进行一系列更改,调用print,然后撤消更改。我最初尝试过这个,但发现它只能在IE中使用。在调用print时,IE会拍摄页面的快照以进行打印。但是,当您单击“确定”进行打印时,Firefox和Chrome会拍摄快照,因此您所做的所有还原都会在打印实际发生之前进行。
长话短说,这是我的解决方法。不太漂亮,但它完成了工作。