IE не загружает PDF в окно, созданное с помощью window.open

Здесь проблема, которая встречается только в Internet Explorer (IE). У меня есть страница с ссылками на несколько разных типов файлов. Ссылки из этих файлов выполняют функцию Javascript, которая открывает новое окно и загружает определенный файл. Это отлично работает, если только файл, который мне нужно открыть в новом окне, - это PDF, и в этом случае окно пустое, даже если URL-адрес находится в поле адреса. Обновление этого окна с помощью F5 не помогает. Однако, если я поместил курсор в поле адреса и нажмите <enter>, загрузка PDF начнется.

Эта проблема возникает только в IE. Я видел это в IE 7 и 8 и использую Adobe Acrobat Reader 9. В Firefox (ПК и Mac) все работает отлично. В Chrome (Mac) загружается PDF файл. В Safari (Mac) он работает. В Opera (Mac) он предлагает мне открыть или сохранить. В принципе, все работает нормально, за исключением IE.

Я искал похожие проблемы и видел некоторые сообщения, на которых было предложено настроить некоторые из параметров Internet на IE. Я пробовал это, но это не помогло, и проблема была совсем не такой.

Здесь я использую функцию Javascript для открытия нового окна.

function newwin(url,w,h) {
   win = window.open(url,"temp","width="+w+",height="+h+",menubar=yes,toolbar=yes,location=yes,status=yes,scrollbars=auto,resizable=yes");
   win.focus();
}

Вы можете видеть, что я передаю URL, а также высоту, h и ширину w окна. Я использовал такую ​​функцию в течение многих лет, и, насколько мне известно, никогда не было проблем.

Я вызываю функцию newwin(), используя это.

<a href="javascript:newwin('/path/document.pdf',400,300)">document.pdf</a>

(Да, я знаю, что есть другие, лучшие способы, чем использование встроенного JS, и я даже пробовал некоторые из них, потому что у меня не хватало усилий, но ничего не работает.)

Итак, если у кого-то есть идея относительно того, что может вызвать эту проблему, я бы с удовольствием это услышал.

Ответы

Ответ 1

попробовать:

function newwin(url,w,h) {
     var win = window.open("","temp","width="+w+",height="+h+",menubar=yes,toolbar=yes,location=yes,status=yes,scrollbars=auto,resizable=yes");
     win.location.href = url;
     win.focus();
}

Ответ 2

Я решил эту проблему с невидимым iframe

<div id="iframe" style="display: none">
  <iframe id="frm" style="display: none"></iframe>
</div>

И эта логика здесь (используя jquery):

if ($.browser.msie && ($.browser.version &lt; 9.0)) {
  frm.location.href = href;
}
else {
  window.open(href);
}

Поведение в моем случае точно так же, как если бы документ был открыт во всплывающем окне, поскольку я использую

Content-Disposition: attachment; filename="document.pdf"