IE не будет загружать PDF в окне, созданном с помощью window.open - PullRequest
13 голосов
/ 27 апреля 2010

Вот проблема, которая возникает только в 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.

Я искал похожие проблемы и видел несколько сообщений, в которых предлагалось настроить некоторые параметры Интернета в 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, и я даже попробовал некоторые из них, потому что у меня закончились попытки, но ничего не работает.)

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

Ответы [ 2 ]

12 голосов
/ 27 апреля 2010

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

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 голосов
/ 14 февраля 2012

Я решил эту проблему с невидимым 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"
...