【发布时间】:2014-05-20 06:53:58
【问题描述】:
我是 JQuery 和 Primefaces 的新手。
Primefaces 中使用以下代码(printer.js)打印所需的目标<p:printer target="targetId">
我正在尝试打印位于对话框内的 Primefaces 面板的内容,它在 IE8 和其他浏览器中运行良好,但在 IE9 及更高版本中它会抛出错误"Internet Stopped Working"
How can i Fix this issue ? Can any one Explain what Does that printer.js Do ?
printer.js
(function(b){var a;
b.fn.jqprint=function(d){a=b.extend({},b.fn.jqprint.defaults,d);
var c=(this instanceof jQuery)?this:b(this);
if(a.operaSupport&&b.browser.opera){
var e=window.open("","jqPrint-preview");
e.document.open();
var g=e.document
}else{
var f=b("<iframe />");
if(!a.debug){
f.css({position:"absolute",width:"0px",height:"0px",left:"-600px",top:"-600px"})
}
f.appendTo("body");
var g=f[0].contentWindow.document
}
if(a.importCSS){
if(b("link[media=print]").length>0){
b("link[media=print]").each(function(){g.write("<link type='text/css' rel='stylesheet' href='"+b(this).attr("href")+"' media='print' />")})
}else{
b("link").each(function(){g.write("<link type='text/css' rel='stylesheet' href='"+b(this).attr("href")+"' />")})\
}
}
if(a.printContainer){
g.write(c.outer())
}else{
c.each(function(){g.write(b(this).html())})
}g.close();
(a.operaSupport&&b.browser.opera?e:f[0].contentWindow).focus();setTimeout(function(){(a.operaSupport&&b.browser.opera?e:f[0].contentWindow).print();if(e){e.close()}},1000)
};
b.fn.jqprint.defaults={debug:false,importCSS:true,printContainer:true,operaSupport:true};
jQuery.fn.outer=function(){return b(b("<div></div>").html(this.clone())).html()}
})(jQuery);
【问题讨论】:
-
我使用
来打印 p:dataTable 的数据,相同的代码在 IE8 和 IE9 中都有效。我像这样使用 : 这里 listId 是 -
@Walker
如果不在对话框中使用,则工作正常。我已将代码发布在 Another Question -
即使在对话框中使用,它在 Mozilla 和其他浏览器中也能正常工作。但是 IE9 及更高版本不支持打印,而是抛出错误为 -“Internet Explorer 停止工作”@Walker
-
这是我的Code我在对话框中尝试过的。任何建议都会很有帮助
-
@First 上面的代码问题可能是重复的,但我在这个问题中寻求的是 Printer.JS 是如何工作的
标签: javascript jquery jsf primefaces printing