3

新しいウィンドウを開いて、要素を印刷専用に含めてみてください。しかし、IE8では機能しませんでした。

function printElement(elementId) {
  var printWindow = window.open('', '_blank',
    'status=0,toolbar=0,location=0,menubar=1,resizable=1,scrollbars=1'); 

  printWindow.document.write("<html><head></head><body></body></html>"); 

  var head = jQuery('head').clone();
  var printElement = jQuery('#' + elementId).clone();

  jQuery(printWindow.document).find('head').replaceWith(head);  // does not work in IE8
  var body = jQuery(printWindow.document).find('body');
  body.empty();
  body.append(printElement);  // does not work in IE8
  return false;
}

手伝ってくれてありがとう。

4

1 に答える 1

3

これはどう?あなたが正しくやりたいことを理解していれば、これでうまくいくはずです。IE 8 でテスト済み。

JSBin での作業例

HTML:

<a href="#" id="one" class="trigger">Print One</a>
<a href="#" id="two" class="trigger">Print Two</a>

JavaScript:

var $trigger = $(".trigger"),
    printElement = function(id) {
        var printWindow = window.open('','_blank','status=0,toolbar=0,location=0,menubar=1,resizable=1,scrollbars=1'),
            html = $('html').clone(),
            printElement = $('#' + id).clone(),
            body;

      printWindow.document.write("<!DOCTYPE html><head></head><body></body></html>"); 

      $(printWindow.document).find('html')
                            .replaceWith(html);

      body = $(printWindow.document).find('body')
                                    .html(printElement);
    };

$trigger.on("click", function(e) {
  var id = $(this).attr("id");

  e.preventDefault();

  printElement(id);
});
于 2013-02-11T02:13:30.670 に答える