8

我是 Web 开发人员,几乎从不从事设计工作,但遇到了这个我正在努力纠正的错误。

当我打印/显示打印预览页面时,某些图像会正确显示,但其他图像则不会。我可以看到的主要区别是,未出现的图像是跨度标签,图像应用在 css 中,而工作图像使用 img 标签。

以下是 html 的示例:

带有“图标”出生的 Span显示:

<li class="media">
    <div class="img">
        <div class="h2 mtm">1889</div>
        <span class="timeline-icon icon-birth"></span>
    </div>
    <div class="bd">
        <h3 class="profile-subtitle mts">Born in ?</h3>
        <p class="deemphasis mbn">
        <a href="/search/results/bmdindexedbirths/bibby/elizabeth%20?yearofbirth=1889">Search     for Birth Record</a>
        </p>
    </div>
</li>

Image.gif确实显示:

<li class="media">
    <div class="img">
        <div class="h6">
            <strong>Spouse</strong></div>
            <img src="image.gif" alt="" class="person-thumb dropshadow" />
        </div>
    <div class="bd">
        <p class="mbn">Husband</p>
        <h3 class="profile-subtitle">
            <a href="path">Thomas&nbsp;<strong>Name</strong></a>
        </h3>
        <p class="mbn">?&#45;?</p>
    </div>
</li>

在某些浏览器中,它在预览中看起来不错,但不打印,在其他浏览器中,它没有并且仍然不打印。

先感谢您!

4

4 回答 4

9

两个多月前我遇到了同样的问题。我有一个按钮可以将用户重定向到一个打印机友好的页面,然后我使用 Javascript 触发了打印对话框。

问题是浏览器没有等到 CSS 背景中指定的图像被下载。

我在触发打印对话框之前设置了超时,以便让浏览器有时间下载图像。这种方法不可靠,因为没有人具有恒定的下载速度,并且它会在图像下载给互联网连接非常慢的用户之前打开打印对话框。

最后,我使用 HTMLimg标签在我的页面上嵌入图像,并使用 jQuery 在下载最后一张图像时触发打印对话框。

于 2012-09-21T14:38:35.123 回答
6

您需要在打印之前延迟。chrome 中有一个原生错误。代码如下:-

function PrintDiv(data) {
    var mywindow = window.open();
    var is_chrome = Boolean(mywindow.chrome);
    mywindow.document.write(data);

   if (is_chrome) {
     setTimeout(function() { // wait until all resources loaded 
        mywindow.document.close(); // necessary for IE >= 10
        mywindow.focus(); // necessary for IE >= 10
        mywindow.print(); // change window to winPrint
        mywindow.close(); // change window to winPrint
     }, 250);
   } else {
        mywindow.document.close(); // necessary for IE >= 10
        mywindow.focus(); // necessary for IE >= 10

        mywindow.print();
        mywindow.close();
   }

    return true;
}
于 2015-10-30T05:43:09.020 回答
1

只需添加以下样式即可使其工作 img{max-width:100%;height:auto;}

它在导致问题的打印中将图像的宽度设置为 0。

于 2016-05-17T08:22:23.323 回答
0

制作一个打印样式表,将您的跨度设置为 display:block

于 2012-09-21T15:11:50.203 回答