- PR -

イベント発生後のIEの「再試行」ダイアログ表示について

1
投稿者投稿内容
くろ
会議室デビュー日: 2005/03/01
投稿数: 13
投稿日時: 2005-09-29 21:34
次のようなWebアプリケーションを作成しています。

リンクボタンAとBが配置された親ウィンドウがあります。
各リンクボタンの動作は、
リンクボタンAをクリック⇒別ページが新規ウィンドウで開く
リンクボタンBをクリック⇒子ウィンドウが開く
です。
各リンクはクリック時にアクセスログを出力する必要があるため、リンクボタンを使用しています。

子ウィンドウである動作をおこなうと、親ウィンドウがリフレッシュされるようにしているのですが、このときにリンクボタンAがクリック済みであるとIEの「再試行」ダイアログが毎回表示されてしまいます。

この現象を回避することはできないのでしょうか。
何か回避策があれば教えてください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-09-30 21:33
言葉の定義が、なんとも、理解不能。。。

まず、
引用:

リンクボタンAをクリック⇒別ページが新規ウィンドウで開く
リンクボタンBをクリック⇒子ウィンドウが開く


『新規ウインドウで開く』と、『子ウインドウが開く』は、どのように違うのでしょう?

つぎに、
それぞれ、どのように実装しているのでしょう?
どうも、リンクボタンAはポストバックして、リンクボタンBはポストバックせずに行っているようです。

そうであるなら、リンクボタンAもポストバックしないようにすればいいでしょう。
___________________________________________________________________
□ written by JittaJitta on 2005/09/292005/09/30
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2005
_________________
くろ
会議室デビュー日: 2005/03/01
投稿数: 13
投稿日時: 2005-10-03 09:49
説明が分かりにくくて申し訳ありません。。

問題となっているのは、一度リンクボタンをクリックしたあとに、ブラウザから更新をおこなったり、JavaScriptからリロードをおこなったりした際に、「再試行」のダイアログが表示されてしまうことです。

初回クリック時だけポストバックを実行し、それ以降の更新ではポストバックを実行しないといった制御は可能なのでしょうか。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-03 10:06
こんにちは

引用:
問題となっているのは、一度リンクボタンをクリックしたあとに、ブラウザから更新をおこなったり、JavaScriptからリロードをおこなったりした際に、「再試行」のダイアログが表示されてしまうことです。



top.window.opener.location.reload();
で、再読込しているということで宜しいですか?そうであればダイアログが出てしまうのはブラウザの挙動なので制御できないかと思います。

Sessionに親画面再構築用のデータを格納して、location.hrefで表示してみてはいかがでしょうか?

[修正]
画面Aとか存在しないものを書いていたので修正
[/修正]

[ メッセージ編集済み 編集者: でっち6号 編集日時 2005-10-04 09:18 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-03 20:02
引用:

くろさんの書き込み(2005-10-03 09:49)より:

問題となっているのは、一度リンクボタンをクリックしたあとに、ブラウザから更新をおこなったり、JavaScriptからリロードをおこなったりした際に、「再試行」のダイアログが表示されてしまうことです。

初回クリック時だけポストバックを実行し、それ以降の更新ではポストバックを実行しないといった制御は可能なのでしょうか。


 やりたいことはわかるんだけど・・・。結論として、出来ません。


 ページのリクエストを発行しました。“再試行”や“リロード”、つまり「もう一回ちょうだい」という要求を出しました。この「もう一回ちょうだい」は、何に対して出されるでしょうか。直前に行った「要求」に対して、です。ですから、前回行ったのが「ポスト要求」であれば、「もう一回」行われるのも「ポスト要求」であり、このとき、前回提出したものを再提出しなければなりません。

 次に、「再試行」のダイアログですが、これはいったい誰が出すのでしょうか。また、なんのために出すのでしょうか?
 というところを考えると、IE が、たとえば掲示板などで同じポスト要求をすると2重投稿になるんだけどいいの?と聞いている、というところに行き着かないでしょうか?つまり、IE の設定であって、ウェブページが設定できることではありません。
___________________________________________________________________
□ written by Jitta on 2005/10/03
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2006
_________________
くろ
会議室デビュー日: 2005/03/01
投稿数: 13
投稿日時: 2005-10-04 21:32
ご返答ありがとうございます。
「再試行」の表示はブラウザの制御であってサーバ側のプログラムからどうにかなるものではないということですね。
調べていくうちにそんな気がしてきました……。
ここで「再試行」の表示が出てしまうのは問題なので、何か別の仕組みを考えたいと思います。
ありがとうございました。


引用:

でっち6号さんの書き込み (2005-10-03 10:06) より:

top.window.opener.location.reload();
で、再読込しているということで宜しいですか?そうであればダイアログが出てしまうのはブラウザの挙動なので制御できないかと思います。

Sessionに親画面再構築用のデータを格納して、location.hrefで表示してみてはいかがでしょうか?




再読込の方法はその通りです。Sessionに親画面のデータを格納するのは難しいかもしれない(+設計がこの部分だけ特殊になってしまう)ですが、試してみたいと思います。

1

スキルアップ/キャリアアップ(JOB@IT)