次の印刷プラグインを使用しています: Ask Ben Print Plugin
プラグインは、入力フィールドのコンテンツを除くページ上のあらゆるものに対して非常にうまく機能します. このプラグインを使用すると、何らかの理由で入力フィールドが印刷プレビュー/最終印刷ドキュメントに表示されない入力フィールドの内容を含むページを印刷できるようにする必要があります。Ctrl+P メソッドを使用して入力フィールドを含むページを印刷すると、入力フィールドの内容が正しく表示されます。
入力フィールドの内容を印刷できない原因となっている以下のコードについて、誰かが特定するのを手伝ってくれるかどうか疑問に思っていました。よろしくお願いします!
JQuery 関数呼び出し:
$(".main-container").print();
Javascript:
// Create a jquery plugin that prints the given element.
jQuery.fn.print = function() {
// NOTE: We are trimming the jQuery collection down to the
// first element in the collection.
if (this.size() > 1) {
this.eq(0).print();
return;
} else if (!this.size()) {
return;
}
// ASSERT: At this point, we know that the current jQuery
// collection (as defined by THIS), contains only one
// printable element.
// Create a random name for the print frame.
var strFrameName = ("printer-" + (new Date()).getTime());
// Create an iFrame with the new name.
var jFrame = $("<iframe name='" + strFrameName + "'>");
// Hide the frame (sort of) and attach to the body.
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;
// Grab all the style tags and copy to the new
// document so that we capture look and feel of
// the current document.
// Create a temp document DIV to hold the style tags.
// This is the only way I could find to get the style
// tags into IE.
var jStyleDiv = $("<div>").append(
$("style").clone());
// Write the HTML for the document. In this, we will
// write out the HTML of the current element.
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("<body>");
objDoc.write("<head>");
objDoc.write("<title>");
objDoc.write(document.title);
objDoc.write("</title>");
objDoc.write(jStyleDiv.html());
objDoc.write("</head>");
objDoc.write(this.html());
objDoc.write("</body>");
objDoc.write("</html>");
objDoc.close();
// Print the document.
objFrame.focus();
objFrame.print();
// Have the frame remove itself in about a minute so that
// we don't build up too many of these frames.
setTimeout(
function() {
jFrame.remove();
}, (60 * 1000));
}