图像未使用Javascript

时间:2016-02-05 03:21:16

标签: javascript printing

我有一个按钮,可以将html页面的内容复制到新页面,然后调用浏览器打印功能。

唯一的问题是它没有复制到< 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>

修改 当我将img url更改为其完整URL时,它可以在IE和Firefox中使用,但不能使用chrome。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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; 
}