You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// -----------------------------------------------------------------------
// Eros Fratini - eros@recoding.it
// jqprint 0.3
//
// - 19/06/2009 - some new implementations, added Opera support
// - 11/05/2009 - first sketch
//
// Printing plug-in for jQuery, evolution of jPrintArea: http://plugins.jquery.com/project/jPrintArea
// requires jQuery 1.3.x
//
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
//------------------------------------------------------------------------
(function ($) { var opt;
$.fn.jqprint = function (options) { opt = $.extend({}, $.fn.jqprint.defaults, options);
var $element = (this instanceof jQuery) ? this : $(this);
if (opt.operaSupport && $.browser.opera) { var tab = window.open("", "jqPrint-preview"); tab.document.open();
var doc = tab.document; } else { var $iframe = $("<iframe />");
if (!opt.debug) { $iframe.css({ position: "absolute", width: "0px", height: "0px", left: "-600px", top: "-600px" }); }
$iframe.appendTo("body"); var doc = $iframe[0].contentWindow.document; }
if (opt.importCSS) { if ($("link[media=print]").length > 0) { $("link[media=print]").each(function () { doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' media='print' />"); }); } else { $("link").each(function () { doc.write("<link type='text/css' rel='stylesheet' href='" + $(this).attr("href") + "' />"); }); } }
if (opt.printContainer) { doc.write($element.outer()); } else { $element.each(function () { doc.write($(this).html()); }); }
doc.close();
(opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).focus(); setTimeout(function () { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000); }
$.fn.jqprint.defaults = { debug: false, importCSS: true, printContainer: true, operaSupport: true };
// Thanks to 9__, found at http://users.livejournal.com/9__/380664.html
jQuery.fn.outer = function () { return $($('<div></div>').html(this.clone())).html(); } })(jQuery);
|