Javascript 打印从服务器加载的内容

Javascript 打印从服务器加载的内容,javascript,html,css,browser,printing,Javascript,Html,Css,Browser,Printing,在整个页面加载之后,我正在通过JS从服务器加载一些图片。 也就是说,通过用户单击,我正在加载一些图像并将其插入DOM 这个图像有唯一的ID,现在我只想通过JS帮助打印出这个图像。 我做样式文件是为了打印 * { display:none; visibility: none; } html, body, #out_image_1 { background: none; display: block !important; left: 0px; mar

在整个页面加载之后,我正在通过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-button2").click(function() {
    window.print();
    return false;
})
但页面是空的,我错在哪里


谢谢

它可能不打印有几个原因

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

    只有当
    #out_image_1
    body
    的直接子项时,CSS才会起作用:

    但如果
    #out_image_1
    具有除
    主体
    html
    之外的任何父元素,则不适用于此:

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

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

  • 您的HTML是可以的,但是您的目标元素是错误的

  • 你的墨水用完了;)

即使使用javascript添加元素,也应该能够打印它。要进行调试,请删除
*{display:none;}
,然后查看发生了什么


*顺便说一下,它应该是
可见性:隐藏;“none”不是有效值,但它与
display:none>是多余的,因此您根本不需要它。

它可能不打印有几个原因

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

    只有当
    #out_image_1
    body
    的直接子项时,CSS才会起作用:

    但如果
    #out_image_1
    具有除
    主体
    html
    之外的任何父元素,则不适用于此:

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

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

  • 您的HTML是可以的,但是您的目标元素是错误的

  • 你的墨水用完了;)

即使使用javascript添加元素,也应该能够打印它。要进行调试,请删除
*{display:none;}
,然后查看发生了什么


*顺便说一下,它应该是
可见性:隐藏;“none”不是有效值,但它与
display:none>是多余的,因此您根本不需要它。

是的,您是对的。如果我的图像不是身体的直接子元素,有没有办法解决这个问题?你必须确保所有的父元素都显示出来。如果没有看到您的脚本或HTML,我无法准确地告诉您。我是否可以将此img标记作为正文的直接子项移动,以便打印完成后将其恢复到以前的位置?老实说,我不确定,它可能会工作,但可能不会。试试看。您可以尝试加载一个单独的窗口,其中包含一个只打印的页面,调用
window.print()
,然后调用
window.close()
,但这很有技巧。但是隐藏的iframe呢?是否可以通过js加载图像,然后调用window.print并在帮助下将CSS设置为inly可见,用于定义宽度和高度的iframe?你认为呢?是的,你是对的。如果我的图像不是身体的直接子元素,有没有办法解决这个问题?你必须确保所有的父元素都显示出来。如果没有看到您的脚本或HTML,我无法准确地告诉您。我是否可以将此img标记作为正文的直接子项移动,以便打印完成后将其恢复到以前的位置?老实说,我不确定,它可能会工作,但可能不会。试试看。您可以尝试加载一个单独的窗口,其中包含一个只打印的页面,调用
window.print()
,然后调用
window.close()
,但这很有技巧。但是隐藏的iframe呢?是否可以通过js加载图像,然后调用window.print并在帮助下将CSS设置为inly可见,用于定义宽度和高度的iframe?你怎么认为?