2016-05-05 13 views
1

私は、通常の入力とファイル入力を含むHTMLフォームを持っています。ユーザーがアップロードするファイルを1つ以上選択すると、フォームのtarget属性が即座にページの非表示iframeのname属性に変更され、フォームのaction属性が送信するスクリプトに変更されますへのファイルアップロード要求。HTMLフォームをiframeに投稿すると、ブラウザの履歴に問題が発生する

要求されたスクリプトから、ファイルをサーバーにアップロードし、スクリプトが終了すると、iframeのonloadイベントが発生し、その後さまざまなインターフェイスが変更されます。

すべてが正しくアップロードされますが、iframe要求によってブラウザの履歴にページリクエストが追加されて意図しない結果が生じることが問題です。私は現在、次の2つの問題を発見した:

  1. 私は1つのファイルをアップロードした場合、その後、右のそのほかのファイルの後に、その後、 は戻るボタンを押しを、ブラウザではなくページに戻る を行くの形にとどまりますフォームの前に表示されます。
  2. 私が1つのファイルをアップロードしてから 戻るボタンを押すと、ブラウザは前のページの に戻りますが、その後、転送ボタンを押してフォームに戻ると、 の理由で、ファイルをアップロードするためにiframe内で実行され、フォームロード時に即座に呼び出され、意図しない他の副作用を引き起こします。

ポイントは、ブラウザの履歴にiframeリクエストを追加すると問題が発生している可能性がありますので、これを避けたいと思います。これがすべて起こるのを止める方法はありますか?

私は現在のところ、最新のバージョンのChromeでしか開発していませんが、私が使用するソリューションはIE8に戻って作業する必要があります。

答えて

1

私は問題と解決策を見つけました。問題は、フォームが最初に読み込まれたときに、フォームページにiframeがあり、何らかの理由で(私にはわからない)上記の問題を引き起こしていたということでした。

しかし、私はページロードからiframeを削除し、ファイルをアップロードするときにJSを介してiframeを動的に作成することに決めました。ファイルがアップロードされ、iframe onloadイベントが発生すると、JSを介してDOMからiframeを削除しても、上記の問題は発生しなくなりました。

私は正直なところ、問題を修正した理由、またはブラウザで起こりうる問題ではないが、iframeを使用してページを再ロードせずにフォームにファイルをアップロードしたい場合は、ページが最初に読み込まれたときにiframeを持たず、iframeを必要なときにのみ動的に追加し、完了したら削除するようにしてください。

関連する問題