7

div次の方法で実行しているものを印刷する必要があります。

function PrintElem(elem)
    {
        Popup(elem.html());
    }

    function Popup(data) 
    {
        var mywindow = window.open('', 'to print', 'height=600,width=800');
        mywindow.document.write('<html><head><title></title>');
        mywindow.document.write('<link rel="stylesheet" href="css/mycss.css" type="text/css" />');
        mywindow.document.write('</head><body >');
        mywindow.document.write(data);
        mywindow.document.write('</body></html>');

        mywindow.print();
        mywindow.close();

        return true;
    }

私の問題は、IEでボタンをクリックしても何も起こらないことです。ただし、ChromeとFirefoxでは機能します。正しく印刷するにはどうすればよいですか?

編集:私はprint次のように呼んでいます:

$('#print_it').click(function(){
    var element = $('#itinerario');
    PrintElem(element);
});

これはprint_it、ボタンのIDです。

私が見たもう一つのことは、しばらくすると、Chromeと他のブラウザがページが応答していないことを教えてくれることです。なぜこうなった?

4

4 に答える 4

8

ウィンドウ名にスペースmywindow.document.close()を含めることはできません。

何かの onclick から PrintElem を呼び出すと仮定します。その何かがリンクの場合は、onclick ハンドラで false を返す必要があります。

これが私がしなければならない場合の方法です

function PrintElem(elem) { 
    Popup($(elem).html());
}

function Popup(data) 
{
    var mywindow = window.open('', 'to_print', 'height=600,width=800');
    var html = '<html><head><title></title>'+
               '<link rel="stylesheet" href="css/mycss.css" type="text/css" />'+
               '</head><body onload="window.focus(); window.print(); window.close()">'+
               data+
               '</body></html>';
    mywindow.document.write(html);
    mywindow.document.close();
    return true;
}

しかし、 window.close() が印刷に干渉するかどうかはわかりません

そして、なぜそうしないのですか

$(function() {
  $('#print_it').click(function(){
    popup($('#itinerario').html());
  });
});
于 2012-08-02T16:53:29.957 に答える
1

ウィンドウ名にスペースがないというmplungjanのメモを使用して解決したようですが、代わりに@mediaprintcssスタイルを大まかに使用することもできます。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <style type="text/css">
        @media print {
            * {
                visibility: hidden;
            }

            .printMe {
                visibility: visible;
            }
        }
    </style>
    <script type="text/javascript" src="jquery-1.4.4.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#Button1").click(function () {
                var divToPrint = $("#div3");
                $(divToPrint).addClass("printMe");
                window.print();
                $(divToPrint).removeClass("printMe");
            }
            )
        }
        );
    </script>
</head>
<body>
    <div id="div1">fhgjghajghhjagjdag</div>
    <div id="div2">ytiyrtiyertuyeyiyt</div>
    <div id="div3">We want to print this one.</div>
    <div id="div4">vnbcxbvmzxbvc,xbv</div>
    <div id="buttonContainer">
        <input id="Button1" type="button" value="button" />
    </div>
</body>
</html>
于 2012-08-02T18:15:05.467 に答える