У меня есть веб-сайт, он имеет функцию для открытия нескольких вкладок в браузере (Google Chrome).При нажатии на клиент вызывается служба для обработки и отправка pdf-файла обратно клиенту для отображения на вкладке браузера.Проблема в том, что он отображается только в нескольких вкладках из открытых вкладок.Например, на 6 вкладках он будет отображаться на вкладке 1,2,6 (я вижу вкладку 1, и всегда отображается последняя вкладка).Я посмотрел на вкладку сети и все 6 запросов были успешно обработаны и возвращены клиенту.
Это мой клиентский код для обработки файла, возвращенного из службы
openReportGet: function (_ctn,_code,_type,_par_ar, isPrintDirect, isCountPrt) {
var par_data=JSON.stringify(_par_ar);
var par_str=window.btoa(unescape(encodeURIComponent(par_data)));
var uuid = jsonrpc.AjaxJson.getUUID();
var _url="../report/directReport.jsp?code="+ _code+"&filetype="+_type+"&reportParam="+ par_str+"&uuid=" + uuid;
console.log('openReport._url='+_url);
$.ajax({
url: _url,
type: "GET",
dataType: 'binary',
success: function(result) {
//called when successful
if(_ctn=='window') {
directReport(result, _code, par_str, par_data, null, isPrintDirect, isCountPrt);
}
else {
document.getElementById(_ctn).src = _blobUrl;
}
}
});
}
function directReport(result, rptCode, rptParam, rptJsonParam, idFrame, isPrintDirect, isCountPrt) {
if(CommonUtil.fileURL) {
console.log('revokeObjectURL='+CommonUtil.fileURL);
URL.revokeObjectURL(CommonUtil.fileURL);
}
else {
console.log('NOT revokeObjectURL');
}
directNotUrlReport(result, rptCode, rptParam, rptJsonParam, idFrame, isPrintDirect, isCountPrt);
}
function directNotUrlReport(result, rptCode, rptParam, rptJsonParam, idIframe, isPrintDirect, isCountPrt) {
var _blobUrl = URL.createObjectURL(new Blob([result], {type : 'application/pdf'}));
CommonUtil.fileURL = _blobUrl;
if (isPrintDirect == undefined || isPrintDirect == null) {
window.open(_blobUrl, '_blank');
return;
}
var bu = new BrowserUtil();
var dbrowser = bu.detectBrowser();
if (dbrowser.isChrome) {
if (isPrintDirect) {
var iframe;
if (idIframe != undefined && idIframe != null && idIframe != '') {
iframe = document.getElementById(idIframe);
if (!iframe) {
iframe = document.createElement('iframe');
iframe.setAttribute("id", idIframe);
}
} else {
iframe = document.createElement('iframe');
}
document.body.appendChild(iframe );
iframe.style.display = 'none';
iframe.onload = function() {
setTimeout(function() {
iframe.focus();
iframe.contentWindow.print();
}, 1);
};
iframe.src = _blobUrl;
}
}
}
Не могудумать о причине еще, надеюсь, что все помогут