添加iframe标记后,Window.open不显示任何内容

时间:2015-08-21 07:43:04

标签: javascript jquery html css iframe

我正在尝试使用带有动态内容的window.open打开一个新窗口(对于我使用此动态内容的打印功能)。 动态HTML下方在window.open页面上不可见,因为它在视图源中可用。请帮我解释为什么它没有显示在那里。

以下是代码。

var win = window.open('', 'title', 'toolbar=0,location=0,menubar=0,resizable=yes,width=' + (screen.width - 100) + ',   height=' + (screen.height - 150));

win.document.write("<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>");

win.document.write("<html>");
win.document.write("<head><title>title</title>");
win.document.write('<script language="javascript" type="text/javascript">function printPage() { PrintDiv("defaultPrintBuffer"); }<\/script>');
win.document.write('</head>');

win.document.write('<body>');

win.document.write("<iframe  width='560' height='315' id='defaultPrintBuffer2' name='defaultPrintBuffer2'>");
win.document.write(iframeContent);
win.document.write("</iframe>");
win.document.write('</body>');

win.document.write("</html>");

win.document.close();

win.focus();
win.printPage();

2 个答案:

答案 0 :(得分:1)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="pagina">test</div>标记未显示您放入其中的内容,您必须在iframe中加载页面。

您可以使用脚本将内容放入iframe:

iframe

请注意,内容本身应该是一个完整的HTML文档。

答案 1 :(得分:1)

由于您提到您正在尝试实施打印,我将在答案而不是评论中添加我解决此问题的方式,因此代码更具可读性。 基本上我创建了一个空(但有效)的html页面,只是在打印之前将节点插入该页面。这避免了使用document.write和iframes,这在很多情况下被认为是不好的做法。如果你真的想要使用iframe,只需将iframe添加到打印页面html中,然后将你的内容附加到该节点而不是身体。

var data = $('myPartOfPageSelector'),
    printPage;
if (!data || !data.length) alert('Nothing to print.');
else {
    printPage = window.open('resources/print.html');
    setTimeout(function() {
        printPage.document.body.innerHTML = data.innerHTML;
        printPage.print();
        printPage.close();
    }, 100);
}