首页 > 程序开发 > web前端 > JavaScript >

JQueryprintarea打印空白问题解决

2017-01-25

JQueryprintarea打印空白问题解决。代码用旧版的printarea进行网页打印。

代码用旧版的printarea进行网页打印

(function (jQuery) {
    var printAreaCount = 0;
    jQuery.fn.printArea = function () {
        var ele = jQuery(this);
        var idPrefix = "printArea_";
        removePrintArea(idPrefix + printAreaCount);
        printAreaCount++;
        var iframeId = idPrefix + printAreaCount;
        var iframeStyle = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;';
        iframe = document.createElement('IFRAME');
        jQuery(iframe).attr({
            style: iframeStyle,
            id: iframeId
        });
        document.body.appendChild(iframe);
        var doc = iframe.contentWindow.document;
        jQuery(document).find("link").filter(function () {
            return jQuery(this).attr("rel").toLowerCase() == "stylesheet";
        }).each(
                function () {
                    doc.write(&#39;<link type="text/css" rel="stylesheet" href="&#39;
                            + jQuery(this).attr("href") + &#39;" >&#39;);
                });
//        doc.write(&#39;<div class="printlogo" ><img src="&#39;+webPath+&#39;/resources/style/&#39;+version+&#39;/usercenter/images/printlogo.jpg"/> </div>&#39;);
        doc.write(&#39;<div class="&#39; + jQuery(ele).attr("class") + &#39;">&#39; + jQuery(ele).html()
                + &#39;</div>&#39;);
       var bdhtml= doc.body.innerHTML;
        var a=bdhtml.substr(bdhtml.indexOf("<div class=\"printtitle marginb30 margint30\">"),bdhtml.indexOf("<div class=\"printtitle marginb30 margint30\">")+1000);
         doc.close();
        var frameWindow = iframe.contentWindow;
        frameWindow.close();
        frameWindow.focus();
      var a = frameWindow.print();
        var b="1";
    }
    var removePrintArea = function (id) {
        jQuery("#iframe" + id).remove();
    };
})

原始代码一直用着没问题,突然有的浏览器点击打印时预览出来一片空白

查看官网最新的源码发现

doc = iframe.contentWindow.document; 使用时需要先open

加上doc.open();问题解决

相关文章
最新文章
热点推荐