1

IE7(内部Webサイト)でのみ実行されるasp.netアプリケーションがあります。

ユーザーがデータを入力する必要があるとき、私はフォームで子ウィンドウをポップアップします。フォームが閉じると、javascript:window.opener.location.reload(true)が呼び出され、新しいデータがメインページに表示されます。

問題は、ブラウザがページを再投稿する必要があると文句を言うことです。この機能をオフにする方法はありますか?

4

7 に答える 7

4

いいえ、しかし解決策はあります。誰かがページにデータを投稿した直後に 302 リダイレクトを使用するのは、一般的に良い設計と考えられています。これにより、そのポップアップが発生しなくなります。詳しく説明させてください。

1) ユーザーがフォームに入力し、POST 経由でデータを送信します。

2) バックエンドはデータを受け取り、それに基づいて動作します。

3) コンテンツをユーザーに返す代わりに、バックエンドはページの処理が完了するとすぐに 302 リダイレクトを発行します (必要に応じて、ユーザーをまったく同じ URL にリダイレクトする可能性があります)。

4) ユーザーに表示されるページは、ブラウザにリダイレクトするように指示したページです。リダイレクトされたページを標準の GET リクエストで読み込みます。ページを更新しようとしても、データは再送信されません。問題が解決しました。

于 2008-09-18T15:47:14.237 に答える
1

これは、ASP.NET の通常の「ポストバック」方法の問題です。この警告なしでページをリロードする必要がある場合、このページは POST ではなく GET から取得する必要があります。Response.Redirect("...") を自分で実行できます。しかし、これはビューステートの使用を破壊します。

于 2008-09-18T15:45:32.913 に答える
1

asp.net mvc は、この問題を修正します。ie7 だけの問題ではなく、ほとんどのブラウザのセキュリティ機能です。ページ全体をリロードするのではなく、js を使用してメイン フォームのコンテンツを更新することを除いて、私が知っている修正はありません。

于 2008-09-18T15:46:12.163 に答える
0

それを行う方法があるとは思いません。代わりに、リロードせずに親ウィンドウをページに誘導しないでください。

javascript:window.opener.location='あなたの URL'

于 2008-09-18T15:46:29.933 に答える
0

これは、window.opener のページが POST リクエストから来ているためです。javascript:window.opener.location = window.opener.location; POST なしでデータを取得できる場合は、GET 要求のみを実行します。

于 2008-09-18T15:47:03.970 に答える
0

ページ 1 からページ 2 に移動し、ブラウザーがページ 1 に戻らないようにする場合は、ページ 1 の上部に次の行を追加します。

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>
于 2010-12-03T05:35:05.500 に答える
0

私の知る限り、スクリプト経由ではありません。

あなたは試すことができます:

window.opener.location = '#';

ブラウザの再投稿を回避する必要があります。また、必要に応じてハッシュ名を調整できます。

于 2008-09-18T15:51:19.797 に答える