0

コンテキストは次のとおりです。

  1. ユーザーがボタンをクリックする
  2. ページの新しい情報でページが更新されます (echo は html コードを出力するために使用されます)。
  3. file.txt が作成されます
  4. 作成されたファイルのダウンロードが自動的に開始されるはずです

以下のコードでは、ファイルが作成され、ページの残りの部分が表示されますが、ダウンロードは開始されません。また、リンクをクリックしてもダウンロードは開始されませんが、ブラウザでtxtファイルが開かれます(強制的にダウンロードしたいのですが)。

一方、javascript をコメントし、ヘッダーの指示をコメント解除すると、正しいページを更新して txt ファイルをダウンロードしますが、そのファイルの内容は間違っています (ページの残りの部分にエコーされた html コードが含まれています)。

=================コードが機能しない==================

      echo "
      <form name=\"fn\" action=\"index.php?option=com_comp\" method=\"post\">
      // more not related stuff
      <input type=\"image\" src=\"".JURI::root().
      "components/com_comp/images/download_icon.png\" .
      "\" name=\"downloadaddresses\">DOWNLOAD_RESULTS
      // more not related stuff";


      if($_POST['downloadaddresses_x']!=0) {

            $myfilename = "tmp/results.txt";
            $fh = fopen($myfilename, 'w');

            $recipients = $_POST['recipients'];
            $semicolon_separated = implode(";", $recipients);

            fwrite($fh, $semicolon_separated);
            fclose($fh);


            /*header('Content-disposition: attachment; filename='.$myfilename);
            header("Content-type: application/octet-stream");*/

            echo "<a href=\"".$myfilename."\" id=\"downloadlink\">
            This download should start automatically!</a>";
            echo "<script type=\"text/javascript\">
                    newwindow=function{
            window.open('".$myfilename."','name','height=400,width=200');
                    if (window.focus) {newwindow.focus()}}
                </script>";
        }           

========================動作しないその他のコード==================

    <script type="text/javascipt">  
    var el = document.getElementById('downloadlink');
    if (document.createEvent) {
        var event = document.createEvent(\"MouseEvents\");
        event.initEvent(\"click\", true, true);
        el.dispatchEvent(event);
    }
    else if (el.click) {
        el.click();
    }
    </script>
4

1 に答える 1

1

clickこのシミュレーション コードの代わりに:

<script type="text/javascipt">  
var el = document.getElementById('downloadlink');
if (document.createEvent) {
    var event = document.createEvent(\"MouseEvents\");
    event.initEvent(\"click\", true, true);
    el.dispatchEvent(event);
}
else if (el.click) {
    el.click();
}
</script>

これを使用できますか:

<script type="text/javascript">
    location.href = document.getElementById('downloadlink').getAttribute('href');
</script>
于 2012-09-07T02:03:14.943 に答える