- PR -

画面間の関数・プロパティ設定

1
投稿者投稿内容
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-06-11 11:52
いつもお世話になっております。
C#.NETでWeb開発しております。

画面Aに検索ボタン、画面Bに検索ボタンのプロパティ設定関数があります。
画面Bは検索結果を表示して、結果の最後にJavaScriptで
画面Aの検索ボタンを有効にする(検索時に画面Aでボタンを無効にする)関数
を実行しています。
しかし、タイミング的に画面Aのポストバックが遅れた場合
画面Aにアクセスできずにエラーを起こし、ボタンが無効のままになってしまいます。

動作してほしい順序は、
画面A(ボタンクリック→ボタン無効)→画面B(検索)
→画面Aポストバック→画面B(検索結果表示)+画面Aのボタン有効
です。

この画面Aポストバックが遅れるようです。
このように、フレームで分けたり、別ウィンドウの関数を呼ぶ際に
気をつけなければならない事とはなんでしょうか?
同じ事で悩まれたからいらっしゃいませんか?
このままだと、ボタンの無効化をしないで出荷しそうです。。。
よろしくお願いいたします。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-06-12 13:16
IE限定なら、documentの現在の状態をチェックできるプロパティが
あったように思います。
その状態をチェックして、すべてが読み込み済みになっていることを
確認してからボタンを有効化する、といった処理を記述することは
可能でしょう。

その他のブラウザで同じ手が使えるかどうかはわかりません(^^;
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-06-14 10:55
お返事ありがとうございます。

おっしゃる通り、documentを使ってページが有効かどうかは
判断できます。
ここで、問題なのがページが有効でないときに
検索時に無効にしたボタンを有効にするタイミングがなくなってしまうことです。
ページが有効の場合、問題なく結果がグリッドに出力したタイミングで
ボタンを有効化できます。
しかし、ポストバックの遅れ等(クライアントの状態だと思いますが)によって
ページにアクセスできなくなった場合どうすることもできないようです。

やはり、Windowsアプリと同様なことは不可能でしょうか。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-06-15 00:03
実際にやってみたわけではないので、うまくいくかどうかはわかりませんが、
setIntervalやclearIntervalではどうでしょうか?
または、画面Bでのボタン有効化処理時に、画面Aが読み込み完了になっていなければ処理を待つようなループを作るとか。
要は、成功するまで繰り返し処理してやればいいかと。
基本は小野@どっとねっとふぁんさんの仰る通りだと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-15 08:00
私は、きれいさっぱりあきらめますね。

 元々HTTPやHTMLは、インタラクティブな用途を目的としていないのですから、ある程度で“無理”とあきらめないと、無茶な実装をやってバグやあとで意味不明なコードを作り込む元となります。

 完全にユーザの挙動を制御したいなら、Webサービス+ノータッチデプロメントやリッチクライアントなど、Webアプリケーション以外の制御できるものを選ぶべきです。
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-06-18 20:54
お返事ありがとうございます。
setTimeoutを使っていろいろ試行錯誤しました。
結局、JavaScriptでは限界があり、さらに調べました。。。
原因自体を調査したところ、
画面A側で検索とともにある情報をXMLファイルに保存している時間だけ
処理が遅れて、画面Bよりもあとに画面Aが表示されるという現象でした。

画面Bに同様の情報を送信しているので、画面BでXMLに保存することで
解決いたしました。
ただ、Jittaさんがおっしゃるように、
今後の作りこみでは、いろいろ考慮しなければならないと実感いたしました。
ありがとうございました。
1

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