2
    $("#print").on('click', function () {
        var child = window.open("image.jpg", "_blank", "location=0,toolbar=0,scrollbars=1,fullscreen=1,menubar=0");
        //any way to know/wait for image to load?
        child.print();
    });

.print() を呼び出す前に、子ウィンドウがイメージの読み込みを完了したことを親ウィンドウが知る方法はありますか? 彼らが幸せなトリガーだった場合、彼らは空白のページを印刷することになります.

私は両方を試しました:

child.attachEvent("onload", function () { child.print(); });

child.attachEvent("DOMContentLoaded", function () { child.print(); });
//(found this online, apparently it's Firefox only, still didn't work)
4

1 に答える 1

1

ページを作成する必要があります。つまり、次のprint.htmlスクリプトをページに追加します。

<html>
<head>
</head>
<body>
<script>
(function( w, d ) {
    var paramsHash = {},
        img = new Image(); 

    (function() {
        var qs = w.location.href.split( '?' )[ 1 ],
            items = [],
            l = 0,
            i = 0,
            param;
        if( qs && qs.indexOf( '&' ) ) {
            items = qs.split( '&' );
        } else {
            items = [ qs ];
        }
        l = items.length;
        for( ; i < l; i++ ) {
            param = items[i].split( '=' );
            paramsHash[ param[ 0 ] ] = param[ 1 ];
        }
    })();
    console.log(paramsHash);
    img.src = paramsHash.img;
    //after the image is loaded, call this function
    img.onload = function() {
        window.print();        
    };
    d.body.appendChild( img );

})( window, document );
</script>
</body>
</html>

次に、次のように使用します。

$("#print").on('click', function () {
    window.open("print.html?img=image.jpg", "_blank", "location=0,toolbar=0,scrollbars=1,fullscreen=1,menubar=0");
    });
于 2012-09-10T21:25:19.217 に答える