如何动态打印iFrame

时间:2013-11-07 06:55:34

标签: javascript jquery

的Javascript

 function printDiv() {
                var k=document.getElementById("printDiv");
                var el = document.createElement("iframe");
                el.setAttribute('id', 'ifrm');
                el.setAttribute('src', k.innerHTML);
                el.print();

            }

HTML:

<div id="printDiv">
<!-- content Here -->
</div>
<input type="button" value="Print" onclick="printDiv()"/>

代码无效。我没有得到任何打印对话框。请帮助我,因为我想使用Dynamic Iframe打印数据。感谢。

4 个答案:

答案 0 :(得分:2)

HTML

<iframe name="print_frame" width="0" height="0" frameborder="0" src="about:blank">
        </iframe>

的Javascript

 function printDiv(divP) {

            window.frames["print_frame"].document.body.innerHTML = $(divP).html();
            window.frames["print_frame"].window.focus();
            window.frames["print_frame"].window.print();
        }

答案 1 :(得分:1)

el.print();替换为

 window.frames.focus();
 window.frames.print();

在JQuery中

function printDiv() {

                $('#printDiv').empty().append('<iframe id="ifrm"></iframe>');
                $('#ifrm').attr('width', '300px');
                $('#ifrm').attr('heigh', '300px');
                $('#ifrm').attr('src', 'http://www.amazon.in')
                window.frames.focus();
                window.frames.print();

            }

小提琴演示

http://jsfiddle.net/TBB4N/8/

答案 2 :(得分:0)

iframe需要焦点,否则它仍将在IE中打印父帧。

function printIframe(id)
{
var iframe = document.frames ? document.frames[id] : document.getElementById(id);
var ifWin = iframe.contentWindow || iframe;
iframe.focus();
ifWin.printPage();
return false;
}

答案 3 :(得分:0)

此功能应该起作用

function printInFrame( UrlReport) {

            function closePrint() {
                document.body.removeChild(this.__container__);
            }

            function setPrint() {
                debugger;
                this.contentWindow.__container__ = this;
                this.contentWindow.onbeforeunload = closePrint;
                this.contentWindow.onafterprint = closePrint;
                this.contentWindow.focus(); // Required for IE
                this.contentWindow.print();
            }
            var oHiddFrame = document.createElement("iframe");
            oHiddFrame.onload = setPrint;
            oHiddFrame.style.position = "fixed";
            oHiddFrame.style.right = "0";
            oHiddFrame.style.bottom = "0";
            oHiddFrame.style.width = "0";
            oHiddFrame.style.height = "0";
            oHiddFrame.style.border = "0";
            oHiddFrame.src = UrlReport;
            document.body.appendChild(oHiddFrame);
        }


        /* #endregion */
    }