Как динамически загрузить изображение в printview с помощью функции document.write - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь загрузить изображение динамически с помощью функции document.write. Пожалуйста, найдите код ниже. Изображение иногда загружается, а иногда не отображается.

    var mywindow = window.open('', 'PRINT', 'height=400,width=600');

    mywindow.document.write('<html><head><title>'+"Contract Approval Form"+'</title>');
    mywindow.document.write('</head><body >');
    mywindow.document.write('<div id="headerLogo"></div>');
    mywindow.document.write('<div id="watermarkDiv"></div>');
    mywindow.document.write('<div style="margin-top:50px;" id="content">' +printContent+ '</div>');
    var img = mywindow.document.createElement('img');
    img.setAttribute('src', 'mylogo.png');
    mywindow.document.getElementById("headerLogo").appendChild(img);
    mywindow.document.write('</body></html>');


    mywindow.document.close(); // necessary for IE >= 10
    mywindow.focus(); // necessary for IE >= 10*/

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

Ответы [ 2 ]

0 голосов
/ 18 января 2019

это ожидание загрузки контента

<script>
var printContent = '<h1>Hello World</h1>';
var mywindow = window.open('about:blank', 'PRINT', 'height=400,width=600');

//~ mywindow.onload = function() {
mywindow.document.write('<html><head><title>'+"Contract Approval Form"+'</title>');
mywindow.document.write('</head><body >');
mywindow.document.write('<div id="headerLogo"></div>');
mywindow.document.write('<div id="watermarkDiv"></div>');
mywindow.document.write('<div style="margin-top:50px;" id="content">' +printContent+ '</div>');
var img = mywindow.document.createElement('img');
img.setAttribute('src', 'mylogo.png');
img.onload = function() {
    // now you can print, need to wait for image to load - which connotes you need to work out how to wait for all content to load
    mywindow.focus();
    mywindow.print();

}

mywindow.document.getElementById("headerLogo").appendChild(img);
mywindow.document.write('</body></html>');

</script>
0 голосов
/ 18 января 2019

Найдено решение от здесь :

Кажется, мне нужно использовать setTimeout

setTimeout(function() {
newWindow.print();
newWindow.close();
}, 250);
...