ボタンをクリックした後にさまざまなファイルをダウンロードするPHP関数があります(PDFボタンをクリックするとpdfファイルがロードされ、DOCボタンをクリックするとdocファイルがロードされます)。どちらのボタンも同じ機能です。
私の問題は、ファイルをダウンロードするときです。PDFの場合、IEは別のページを開き、それを閉じてファイルをダウンロードするかどうかを選択しますが、DOCの場合、IEは別のページを開き、閉じません。
コードは(私にとっては)同じです。違いはありません。
<pre>
<code>
public function lettrecadrageAction() {
$nom = $_POST['type'];
switch ($nom):
case 'Fichier DOC' :
$path = "ddl/lettre_de_cadrage.doc";
header('Content-Description: File Transfer');
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=lettre_de_cadrage.doc");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
break;
case 'Fichier PDF' :
$path = "ddl/lettre_de_cadrage.pdf";
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header("Content-Disposition: attachment; filename=lettre_de_cadrage.pdf");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
break;
endswitch;
exit;
}
</code>
</pre>
クリックの Js アクション
<pre>
<code>
$('.ldc_dl').click(function() {
var f = document.createElement("form");
f.method = "POST";
f.name = "form";
f.target = "_blank";
f.setAttribute('style', 'display: none;');
f.action = "http://" + document.domain + "/Exploitation/lettrecadrage/";
var fHtml = document.createElement("input");
fHtml.type = "text";
fHtml.name = "type";
fHtml.value = $(this).html();
console.log(fHtml);
var fSubmit = document.createElement("input");
fSubmit.type = "submit";
f.appendChild(fHtml);
f.appendChild(fSubmit);
document.body.appendChild(f);
f.submit();
document.body.removeChild(f);
return true;
}) </code>
</pre>
ボタンの HTML コード
<pre>
<code>
<div class="tab-pane fade" id="ldc">
<p>La lettre de cadrage est disponible en <button id="ldc_dl_doc" class="btn btn-link ldc_dl" type="button">Fichier DOC</button></p>
<p> Ou en <button id="ldc_dl_pdf" class="btn btn-link ldc_dl" type="button">Fichier PDF</button></p>
</div>
</code>
</pre>
(ボタンは「Fichier PDF」と「Fichier DOC」)
編集 - 解決策
コメントの jbl の助けを借りて、 iframe を使用して問題を解決しました。
var frame = document.createElement("iframe");
frame.setAttribute("src", "_blank");
フォームターゲットを変更します
f.target = frame;