使用图像打印Div

时间:2015-08-07 17:37:20

标签: javascript html css ajax

我正在开发一个MVC C#app,其中div的内容由一个AJAX调用组成,该调用检索数据库字段并作为成功消息返回给JavaScript。字符串(一个简单的例子):

"<div style='background:yellow'>asdf<img src='myfile.jpg'></div>"
然后打印

function printDivContents(contents) {
    var printContents = contents;
    var originalContents = document.body.innerHTML;
    document.body.innerHTML = "<div style='margin:10px'>" + printContents + "</div>";
    window.print();
    document.body.innerHTML = originalContents;
}

在大多数情况下,所有内容都打印得很完美,但是当有图像时,只有先前已经加载过才能打印出来。我希望它始终打印。我尝试在内容字符串中添加预加载脚本。我只能使用纯JavaScript而不是jQuery,并且所有CSS都必须是内联的。我有什么选择来加载图像?我应该暂停执行以等待DOM加载,将图像指定为调用页面上隐藏的div背景,还是......?

2 个答案:

答案 0 :(得分:0)

在进行初始AJAX调用的页面上,创建一个隐藏的div:

<div style="display:none; background:url('myfile.jpg')"></div>

如果文件是动态更改的,请在打印前更改div的背景。

答案 1 :(得分:0)

如果你想仍然能够动态更改图像,我遇到了非常类似的问题,并发现等待图像加载的效果非常好:

var image = Image();
image.onload(function () {
    //print the screen, or do whatever
});
image.src = "whateverImgSrc";