窗口.打开后不显示任何添加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();

既然您提到您正在尝试实现打印,那么我将在回答中而不是注释中添加我是如何解决这个问题的,这样代码更易于阅读。基本上,我制作了一个空的(但有效的)html页面,并在打印之前将节点插入该页面。这避免了文档的使用。Write和iframe,这在很多情况下被认为是不好的做法。如果您真的想使用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);
}

iframe标签不显示你放进去的内容,你必须在iframe中加载一个页面。

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

win.document.write("<iframe  width='560' height='315' id='defaultPrintBuffer2' name='defaultPrintBuffer2'>");
win.document.write("</iframe>");
win.document.write("<script type='text/javascript'>var doc = document.getElementById('defaultPrintBuffer2').contentWindow.document;doc.open();doc.write('" + iframeContent.replace("'","\'").replace("\","\\") + "');doc.close();</script>");

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

相关内容

最新更新