window.print()在Internet Explorer中挂起

时间:2015-07-03 23:57:13

标签: javascript jquery internet-explorer internet-explorer-8

我正在尝试打开new窗口和print内容。

var parentHeader= $("head").html();
var parentDivContent = $("#printer_data_1").html();
var newW= window.open("", "", "scrollbars=1,width=200,height=200");
    newW.document.write('<html><head><title>Title</title>'+parentHeader+'</head>');
    newW.document.write('<body><div>');
    newW.document.write(parentDivContent );
    newW.document.write('</div></body></html>');
    newW.document.close();
    newW.print();
    newW.close();

当我尝试运行上面的code时,它会在IE8中挂起,当我对以下行发表评论时......它可以正常工作。

newW.document.write('<html><head><title>Title</title>'+parentHeader+'</head>');

我希望将整个内容,样式加载到新窗口的head部分。

2 个答案:

答案 0 :(得分:2)

  

想要将整个内容,样式加载到头部   新窗口

尝试将html的{​​{1}}编译为单个字符串,包括newW head html;在调用parentHeader的第二个参数时为name设置newW引用;使用单个window.open()字符串作为参数调用document.write

html

答案 1 :(得分:1)

您可能希望使用innerHTML代替document.write。那可能是你的问题。

var someVar = 50,
  el = document.getElementById('btn');

function onOpen() {
  var prnt = open();
  prnt.document.title = 'Page Title';
  prnt.document.body.innerHTML = [
    '<h1>',
    'heading of the page',
    someVar,
    '</h1>',
    '<p>A paragraph with text.</p>'
  ].join('');
  prnt.print();
  prnt.close();
}

el.attachEvent('onclick', onOpen);
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Print for Legacy IE</title>
</head>

<body>

  <a id="btn" href="#">Link</a>

</body>

</html>