Javascript 打印div内容时出错
大家好,我正在使用这个jQuery函数来打印div内容。 第一次显示/打印空页。但第二次它起作用了。 它在Javascript 打印div内容时出错,javascript,jquery,dom,Javascript,Jquery,Dom,大家好,我正在使用这个jQuery函数来打印div内容。 第一次显示/打印空页。但第二次它起作用了。 它在console.log()中显示div内容,但不打印这些内容 我正试图找出问题所在,但还是坚持了下来。请帮忙 提前谢谢 jQuery.fn.LBCprint = function() { var jStyleDiv = ''; var strFrameName = ("printer-" + (new Date()).getTime()); var jFrame =
console.log()中显示div内容,但不打印这些内容
我正试图找出问题所在,但还是坚持了下来。请帮忙
提前谢谢
jQuery.fn.LBCprint = function()
{
var jStyleDiv = '';
var strFrameName = ("printer-" + (new Date()).getTime());
var jFrame = $("<iframe name='"+strFrameName+"'>");
jFrame.css("width", "1px").css("height", "1px").css("position", "absolute").css("left", "-9999px").appendTo($("body:first"));
// Get a FRAMES reference to the new frame.
var objFrame = window.frames[strFrameName];
// Get a reference to the DOM in the new frame.
var objDoc = objFrame.document;
jStyleDiv = $("<div>").append(
$("style").clone()
);
objDoc.open();
objDoc.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
objDoc.write("<html>");
objDoc.write("<head>");
objDoc.write("<title>");
objDoc.write(document.title);
objDoc.write("</title>");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com/n/css/main_style_print.css\" />");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com/n/css/dashboard.css\" />");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com/assets/css/pagination.css\" />");
objDoc.write("</head>");
objDoc.write("<body>");
objDoc.write(jStyleDiv.html());
objDoc.write(this.html());
objDoc.write("</body>");
objDoc.write("</html>");
objDoc.close();
// Print the document.
objFrame.focus();
objFrame.print();
jStyleDiv = '';
setTimeout(function(){
jFrame.remove();
}, (10000));
}
jQuery.fn.LBCprint=function()
{
var jStyleDiv='';
var strFrameName=(“打印机-”+(新日期()).getTime());
var jFrame=$(“”);
jFrame.css(“宽度”,“1px”).css(“高度”,“1px”).css(“位置”,“绝对”).css(“左”,“-9999px”).appendTo($(“正文:第一”));
//获取新帧的帧引用。
var objFrame=window.frames[strFrameName];
//获取对新框架中DOM的引用。
var objDoc=objFrame.document;
jStyleDiv=$(“”)。追加(
$(“样式”).clone()
);
objDoc.open();
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(文件名);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
write(jStyleDiv.html());
write(this.html());
objDoc.write(“”);
objDoc.write(“”);
objDoc.close();
//打印文档。
objFrame.focus();
objFrame.print();
jStyleDiv='';
setTimeout(函数(){
jFrame.remove();
}, (10000));
}
您可以尝试以下方法:
html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
html += "<html>";
html += "<head>";
html += "<title>";
html += document.title;
html += "</title>";
html += "<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com/n/css/main_style_print.css\" />";
html += "<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com/n/css/dashboard.css\" />";
html += "<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com/assets/css/pagination.css\" />";
html += "</head>";
html += "<body>";
html += jStyleDiv.html();
html += this.html();
html += "</body>";
html += "</html>";
objDoc.open();
objDoc.write(html);
objDoc.close();
html=”“;
html+=“”;
html+=“”;
html+=“”;
html+=document.title;
html+=“”;
html+=“”;
html+=“”;
html+=“”;
html+=“”;
html+=“”;
html+=jStyleDiv.html();
html+=this.html();
html+=“”;
html+=“”;
objDoc.open();
编写(html);
objDoc.close();
更换后,您的代码对我来说运行良好
// Print the document.
objFrame.focus();
objFrame.print();
与
我猜您的帧有时在打印时不会被渲染。我这样做很简单,您可以使用$而不是jQuery来简化所有操作,这样就不会发生冲突。我只是打印正文内容
$.fn.LBCprint = function()
{
var jStyleDiv = '';
var strFrameName = ("printer-" + (new Date()).getTime());
var jFrame = $("<iframe name='"+strFrameName+"'>");
jFrame.css("width", "1px").css("height", "1px").css("position",
"absolute").css("left", "-9999px").appendTo($("body:first"));
// Get a FRAMES reference to the new frame.
var objFrame = window.frames[strFrameName];
// Get a reference to the DOM in the new frame.
var objDoc = objFrame.document;
jStyleDiv = $("<div>").append(
$("style").clone()
);
objDoc.open();
objDoc.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
objDoc.write("<html>");
objDoc.write("<head>");
objDoc.write("<title>");
objDoc.write(document.title);
objDoc.write("</title>");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com
/n/css/main_style_print.css\" />");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com
/n/css/dashboard.css\" />");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com
/assets/css/pagination.css\" />");
objDoc.write("</head>");
objDoc.write("<body>");
objDoc.write(jStyleDiv.html());
objDoc.write(document.body.innerHTML);
objDoc.write("</body>");
objDoc.write("</html>");
objDoc.close();
// Print the document.
objFrame.focus();
objFrame.print();
jStyleDiv = '';
setTimeout(function(){
jFrame.remove();
}, (10000));
}
$.fn.LBCprint=function()
{
var jStyleDiv='';
var strFrameName=(“打印机-”+(新日期()).getTime());
var jFrame=$(“”);
jFrame.css(“宽度”、“1px”).css(“高度”、“1px”).css(“位置”,
“绝对值”).css(“左”,“-9999px”).appendTo($(“正文:第一”));
//获取新帧的帧引用。
var objFrame=window.frames[strFrameName];
//获取对新框架中DOM的引用。
var objDoc=objFrame.document;
jStyleDiv=$(“”)。追加(
$(“样式”).clone()
);
objDoc.open();
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(文件名);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
objDoc.write(“”);
write(jStyleDiv.html());
write(document.body.innerHTML);
objDoc.write(“”);
objDoc.write(“”);
objDoc.close();
//打印文档。
objFrame.focus();
objFrame.print();
jStyleDiv='';
setTimeout(函数(){
jFrame.remove();
}, (10000));
}
这里是不要使用文档。写
,奇怪的是它会覆盖文档。@adeneo还有什么选择??如果您使用jQuery,请阅读文档?此代码将在每一行重新定义html
变量。最后,您实际上只是调用objDoc.write(“”)代码>
$.fn.LBCprint = function()
{
var jStyleDiv = '';
var strFrameName = ("printer-" + (new Date()).getTime());
var jFrame = $("<iframe name='"+strFrameName+"'>");
jFrame.css("width", "1px").css("height", "1px").css("position",
"absolute").css("left", "-9999px").appendTo($("body:first"));
// Get a FRAMES reference to the new frame.
var objFrame = window.frames[strFrameName];
// Get a reference to the DOM in the new frame.
var objDoc = objFrame.document;
jStyleDiv = $("<div>").append(
$("style").clone()
);
objDoc.open();
objDoc.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
objDoc.write("<html>");
objDoc.write("<head>");
objDoc.write("<title>");
objDoc.write(document.title);
objDoc.write("</title>");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com
/n/css/main_style_print.css\" />");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com
/n/css/dashboard.css\" />");
objDoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.abc.com
/assets/css/pagination.css\" />");
objDoc.write("</head>");
objDoc.write("<body>");
objDoc.write(jStyleDiv.html());
objDoc.write(document.body.innerHTML);
objDoc.write("</body>");
objDoc.write("</html>");
objDoc.close();
// Print the document.
objFrame.focus();
objFrame.print();
jStyleDiv = '';
setTimeout(function(){
jFrame.remove();
}, (10000));
}