jquery.printArea改进
来源:互联网 发布:下载漫画的软件 编辑:程序博客网 时间:2024/06/01 07:32
百度搜索网页局部打印,很容易找到一个jquery的扩展jquery.printArea,这个扩展代码量很小,不过有一个问题:$(‘#printHtml’).printArea(),的#printHtml如果设置了样式,是不管用的,我改进了一下,代码如下:
(function($) { var printAreaCount = 0; $.fn.printArea = function() { var ele = $(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'); $(iframe).attr({ style: iframeStyle, id: iframeId }); document.body.appendChild(iframe); var doc = iframe.contentWindow.document; $(document).find("link").filter(function() { return $(this).attr("rel").toLowerCase() == "stylesheet"; }).each( function() { // 这里是在将网页中的所有css引入,即打印区域的css如果是link进来的,可以设置在网页的任何位置 doc.write('<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" >'); }); doc.write($(ele).prop('outerHTML')); // 将待打印元素原封不动的引入 doc.close(); var frameWindow = iframe.contentWindow; frameWindow.close(); frameWindow.focus(); // 必须等待frame加载完成后再打印,否则可能在某些浏览器中打印不出东西。 frameWindow.onload = function() { frameWindow.print(); }; } var removePrintArea = function(id) { $("iframe#" + id).remove(); };})(jQuery);
主要问题在于:doc.write($(ele).prop('outerHTML')); jquery将元素本身引入网页,要用到$(selector).prop('outerHTML'),而不必使用:doc.write('<div class="' + $(ele).attr("class") + '">' + $(ele).html() + '</div>');这种复杂的方法。何况这里只有class被引入,并没考虑到id。
阅读全文
0 0
- jquery.printArea改进
- jquery.PrintArea.js
- jQuery.printArea 插件Bug
- jQuery.printArea css问题
- jQuery打印插件PrintArea实现jQuery打印插件PrintArea实现
- jQuery打印插件PrintArea实现
- jquery的printArea打印功能
- JQuery printarea 打印空白问题解决
- jquery.PrintArea.js打印插件
- jquery.PrintArea.js 打印整个页面问题
- jquery.printarea打印插件字体设置问题
- 局部打印插件 jquery.PrintArea.js
- jquery PrintArea 实现票据的套打
- 局部打印插件 jquery.PrintArea.js
- jquery.PrintArea.js 实现打印局部页面
- jQuery Ui.Layout.js——PrintArea.js学习
- jQuery插件PrintArea实现javascript打印页面某区域功能
- jquery插件printArea打印、corner圆角使用
- HTML5基础知识回顾
- 如何线程安全的使用HashMap
- 自定义view onMeaure
- map沉淀复制/reduce滚雪球
- python之路——函数式编程
- jquery.printArea改进
- 人工智能+
- zookeeper学习点
- c++ winpcap开发(5)
- 自定义Dialog
- MySQL事务的可串行化
- 一分钟了解“matlab把一个矩阵矩阵范围拉伸到minVal~maxVal的范围内”
- TensorFlow 之命令行参数
- SHUOJ几队周尼玛