1

$.ajax クロス ドメイン呼び出しを介して img html 要素の別のドメインから画像を読み込み、以下のコードでわかるように、画像の内容を含むポップアップを開きます。

     var printWindow= "";                                                                 
      methodName = "CreateVisitor";
            $.support.cors = true;
            $.ajax({
                type: "get",
                url: visitorServiceUrl + methodName + "/" + tenantId + "/" + userId
                    + "/" + visitorid + "/" + visitorname + "/" + visitormobilenumber
                    + "/" + visitorcompanyid + "/" + visitorcompanyname + "/" + visiteeid,
                dataType: "jsonp",
                async: false,
                cache: false,
                crossDomain: true,
                success: function (data) {
                    var imageUrl = "";
                    imageUrl = data ? siteImageUrl + data : 'image/NO_IMAGE.jpg';
                    $("#visitorcard").attr('src', imageUrl);
                    printWindow = window.open($("#visitorcard").attr('src'), "_blank", 'width=200,height=200');
                    //                        printWindow.onload = function () {
                    //                            printWindow.print();
                    //                        };
                    setTimeout(function () { printvisitorcard(); }, 1000);

                },
                error: function (xhr, type, exception) {
                    //alert("Error: " + xhr + " : " + exception + " : " + type);
                }
            });

次に、setTimeout() を使用して、このようにネットワーク プリンターに画像を自動的に印刷しようとします (同じドメインにいるかどうかはわかりません)。

function printvisitorcard() {
printWindow.print();
printWindow.close();

}

ただし、 Microsoft JScript ランタイム エラーが発生するたびに、アクセスが拒否されました。printWindow.print(); で ライン。JavaScript のクロス ドメインの問題は認識していますが、それでも画像を印刷したいと考えています。このエラーを解決するにはどうすればよいですか? どんな助けでも大歓迎です。

PS Firefox と Chrome はこのエラーをスローしませんが、画像も印刷しません。

4

1 に答える 1

1

独自のドメインのものに変更します。

ここにデモがあります - Fx で動作します - Chrome で動作するには、クリック ハンドラを追加する必要があります。ユーザーがクリックして取得しない限り、ポップアップはブロックされます

success: function (data) {
  var imageUrl = data ? siteImageUrl + data : 'image/NO_IMAGE.jpg';
  $("#visitorcard").attr('src', imageUrl);
  var printWindow = window.open("", "_blank", 'width=200,height=200');
  printWindow.document.write('<body onload="window.focus();window.print()">'+
    $("#visitorcard").parent().html()+'</body>');
  printWindow.document.close();
},
于 2012-09-18T13:53:06.393 に答える