MS Edge Append Issue
jQuery append() into new window not working with Microsoft Edge
by switzerbaden
HTML
<div class="entry-content">
<div id="my_target">
<div class="noprint">This should not show up in the print page</div>
<form>
<input type="text" name="texter" placeholder="placeholder text" value="" id="texter" size="30">
<br>
<textarea id="textboxer" name="textboxer"> </textarea>
<br>
<input type="radio" name="radioman" value="boy"> Boy
<br>
<input type="radio" name="radioman" value="girl"> Girl
<br>
<input type="radio" name="radioman" value="dog"> Dog
<br>
<input type="text" name="noidforme" placeholder="input w/o id" value="" size="30">
<br>
</form>
<div class="trigger" id="id5458" alt="print me" title="print me" data-print_target="#my_target">Print Me</div>
<div class="bloop" style="display: none">This is some hidden dirty content about dirty, dirty things but will only show up with Print-Pro-Matic.</div>
<p>here is some more <strong>text</strong>
</p>
</div>
</div>
CSS
.trigger {
cursor: pointer;
}
JavaScript
jQuery(document).ready(function() {
jQuery('.trigger').click(function() {
var target = jQuery(this).data('print_target');
var w = window.open('', '', 'status=no, toolbar=no, menubar=no, location=no');
var ua = window.navigator.userAgent;
var ie = true;
//.html() required for IE browsers
if (ua.indexOf("MSIE ") != -1) {
//console.log('MSIE - Craptastic');
jQuery(w.document.body).append($(target).clone(true).html());
//print_html += jQuery( target ).clone( true ).html();
} else if (ua.indexOf("Trident/") != -1) {
//console.log('IE 11 - Trident');
jQuery(w.document.body).append(jQuery(target).clone(true).html());
//print_html += jQuery( target ).clone( true ).html();
} else if (ua.indexOf("Edge/") != -1) {
console.log('IE 12 - Edge');
//error: No such interface supported
jQuery(w.document.body).append(jQuery(target).clone(true).html());
console.log('script breaks in Edge... not getting this far..');
//works
//jQuery(w.document.body).append( 'hey dude, this is some text' );
//works
//jQuery(w.document.body).html( jQuery( target ).clone( true ).html() );
} else {
//console.log('proper browser');
jQuery(w.document.body).append(jQuery(target).clone(true));
ie = false;
}
});
});