2016-02-05 3 views
0

У меня есть кнопка, которая копирует содержимое html-страницы на новую страницу и затем вызывает функцию печати браузеров.Изображение не скопировано на новую страницу html с помощью Javascript

Единственная проблема заключается в том, что это не копирование через < IMG>

JS:

function PrintElem(elem) 
{ 
    Popup($(elem).html()); 
} 
function Popup(data) 
{ 
var mywindow = window.open('', 'my div', 'height=600,width=800'); 
mywindow.document.write('<html><head><title>Hire Form</title>'); 

mywindow.document.write('</head><body >'); 
mywindow.document.write(data); 
mywindow.document.write('</body></html>'); 

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

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

return true; 
} 

HTML Img:

<img src="../../../Corp/SiteAssets/Intranet%20Branding/Logo.png" alt="Test"></img> 

EDIT Когда я изменить IMG url к его полному url он работает в IE и Firefox, но не в хром.

+0

https://jsfiddle.net/arunpjohny/8kgmzcf8/1/? –

+1

Возможно, изображение еще не загружено, вам нужно вызвать 'mywindow.print();' после того, как изображение полностью загружено. – Adrian

+0

@AdrianDelaPiedra Как вы узнаете, когда изображение загружено? – Roland

ответ

0

Я могу получить вашу точку зрения.

посмотрите пожалуйста https://jsfiddle.net/j34aeafp/.

function PrintElem(elem) { 
    Popup('asdfsdf <img id="needImage" src="//placehold.it/64/fff000" alt="Test"></img>'); 
} 

function Popup(data) { 
    var mywindow = window.open('', 'my div', 'height=600,width=800'); 
    mywindow.document.write('<html><head><title>Hire Form</title>'); 

    mywindow.document.write('</head><body >'); 
    mywindow.document.write(data); 
    mywindow.document.write('</body></html>'); 

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

    // listen img onload then call print 
    mywindow.document.getElementsByTagName('img')[0].onload = function(){ 
    mywindow.print(); 
    mywindow.close(); 
    }; 

    return true; 
} 

PrintElem(); 
+0

Или вы можете просто использовать то, что @Adrian Dela Piedra сказать, он сделал то же самое – Jelly

+0

См. Редактирование OP. Не работает в хроме, и при этой проверке окно печати никогда не появляется в хроме (при загрузке или при нажатии кнопки). – Roland

0

Вы можете добавить событие OnLoad к телу, так что вам не нужно изменять или добавлять атрибуты для каждого элемента изображения, как показано ниже.

function Popup(data) 
{ 
    var mywindow = window.open('', 'my div', 'height=600,width=800'); 
    mywindow.document.write('<html><head><title>Hire Form</title>'); 

    mywindow.document.write('</head><body onload="window.print(); window.close();">'); 
    mywindow.document.write(data); 
    mywindow.document.write('</body></html>'); 

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

    return true; 
} 
Смежные вопросы