【问题标题】:Printing content loaded from server打印从服务器加载的内容
【发布时间】:2012-01-09 11:33:56
【问题描述】:

加载整个页面后,我正在通过 JS 从服务器加载一些图片。 意味着通过用户点击我正在加载一些图像并将其插入 DOM。

此图像具有唯一 ID,现在我只想通过 JS 帮助打印出此图像。 我为打印目的做了样式文件

* {
    display:none;
    visibility: none;
}
html, body, #out_image_1 {
    background: none;
    display: block !important;
    left: 0px;
    margin: 0px;
    padding: 0px;
    position: relative;
    top: 0px;
}

并调用 print 这样的

$("#print-button2").click(function() {
    window.print();
    return false;
})

但是页面是空白的(空的)我错在哪里?

谢谢

【问题讨论】:

    标签: javascript html css browser printing


    【解决方案1】:

    它可能无法打印有几个原因。

    • 您的图像可能包含在另一个元素中,但根据您的 CSS,父元素仍然是 display:none

      只有当 #out_image_1body 的直接子代时,您的 CSS 才会起作用:
      http://jsfiddle.net/RXMx8/

      但如果#out_image_1 有除bodyhtml 之外的任何父元素,则不会:
      http://jsfiddle.net/RXMx8/1/

    我打赌这就是问题所在,但其他原因可能是:

    • 默认情况下,您的浏览器未设置为打印图像。使用window.print() 可能会跳过“打印预览”,这可以让您打开此设置。

    • 您的 HTML 没有问题,但您定位到了错误的元素。

    • 你的墨水用完了; )

    即使您使用 javascript 添加元素,您仍然应该能够打印它。对于调试,删除* { display:none; } 看看会发生什么。

    * 对了,应该是visibility: hidden;; "none" 不是一个有效值,但它与 display:none 是多余的,所以你根本不需要它。

    【讨论】:

    • 是的,你是对的。如果我的图像不是 body 的直接孩子,有什么办法可以解决它?
    • 您必须确保显示所有父元素。如果没有看到您的脚本或 HTML,我无法准确告诉您。
    • 我可以将此 img 标签作为 body 的直接子标签移动以进行着色,打印完成后将其恢复到之前的位置吗?
    • 老实说,我不确定,它可能有效,但可能无效。试试看。您可能会尝试加载一个带有仅打印页面的单独窗口,调用window.print(),然后调用window.close(),但这很hacky。
    • 但是隐藏的 iframe 呢?是否可以通过 js 在那里加载图像,然后调用 window.print 并在帮助下为这个具有定义宽度和高度的 iframe 设置可见的 CSS?你觉得呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多