javascript window.print()访问被拒绝



我正在通过$.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();

}

但是,每次我都会遇到MicrosoftJScript运行时错误:访问被拒绝在printWindow.print()上;线我知道javascript的跨域问题,但我仍然想打印图像。我该如何克服这个错误?任何帮助都将不胜感激。

第S页Firefox和Chrome不会抛出此错误,但它们也不会打印图像。

更改为您自己域中的内容。

这里有一个DEMO-在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();
},

相关内容

  • 没有找到相关文章

最新更新