I am trying to print the contents of a Bootstrap modal window. The code I have used to work but it no longer does. Content is added to the form in a separate function using appendChild(), however when attempting to print nothing is shown in the print preview, just a blank page. I'd appreciate any suggestions as to why this is happening now and how to fix it.
This is my HTML:
<div id="printThis">
<div class="modal inmodal" id="shipping_label" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content animated fadeIn">
<div class="modal-header no-print" style="border:0px;">
<button type="button" class="close no-print" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
</div>
<div class="modal-body-shippinglabel">
<img alt="image" class="img-rounded" src="img/firebee.png" style="height: 25%; width: 25%;" />
<div class="ibox-content" style="border:0px">
<form id="recipientData" action="#" class="wizard-big">
<input class="no-print" id="shippingID" name="ShippingID" style="display:none">
</form>
</div>
<button type="button" class="btn btn-primary no-print" id="printLabel">Print</button>
<button type="button" class="btn btn-primary no-print" id="saveLabel">Save</button>
</div>
</div>
</div>
</div>
</div>
This is my CSS:
@media print {
nav.navbar-static-side {
display: none;
}
body {
overflow: visible !important;
}
#page-wrapper {
margin: 0;
}
}
@media screen {
#printSection {
display: none;
}
}
@media print {
body * {
visibility:hidden;
}
#printSection, #printSection * {
visibility:visible;
}
#printSection {
position:absolute;
left:0;
top:0;
}
}
@media print {
.no-print, .no-print * {
display: none !important;
}
}
And this is my JavaScript function:
//Add function to print label button
var printLabel = document.getElementById('printLabel');
printLabel.onclick = function(){
printElement(document.getElementById("printThis"));
window.print();
}
function printElement(elem) {
var domClone = elem.cloneNode(true);
var $printSection = document.getElementById("printSection");
if (!$printSection) {
var $printSection = document.createElement("div");
$printSection.id = "printSection";
document.body.appendChild($printSection);
}
$printSection.innerHTML = "";
$printSection.appendChild(domClone);
}