- PR -

Javascriptで同期を取りたい

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-12-01 15:38
Javascriptを使ってconfirmのように処理結果を取得したいのですが、どのようにしたらよいでしょうか?

if (confirm("よいですか?")) {

でwindowイベントなので取得可能だと思いますが、私の方で作っている画面はファイルレイアウトを変更できるよう、jspファイルで取得しています。

Ajaxを使って画面情報を取得し、表示しているのでreturn値を取得できるわけは無いのですが。

var ret = null;
function DialogConfirm(_msg) {
 if (ret) {
  window.location = 'logout.action';
  clearInterval(ret);
  ret = null;
 } else if(ret == "false") {
  clearInterval(ret);
  ret = null;
 } else {
  画面.show();
  setInterval(DialogConfirm("よろしいですか?"), 1000)
 }
}
DialogConfirm_onClick(val) {
 // val = true or false
 ret = val;
}

何とかこんな感じでglobalで「はい、いいえ」どちらかが選択されたかを取得したいのですが・・、良い方法はありませんでしょうか?

よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-12-01 16:44
うーん、タイマー監視する必要ないのでは?
単にDialogConfirm_onClick()で、今あるifを実行すればいいだけじゃないかと。

というか、以前作ったAjaxサービスはそういう感じです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-12-01 16:48
話が分かりにくいので整理すると、

・独自の確認ダイアログを作りたい
・現在の表示中のページの中に、別レイヤで表示したい
・押下したボタンを知りたい
・ボタン押下後に、ボタンに応じた処理を行いたい

ということですか?

この手のアプリの作り方としては、
ダイアログ表示中はJavaScript処理をブロッキングできません。
ですので、仕組みとしては、

・ダイアログを表示する関数は表示だけ行って終了
・ダイアログのボタン押下のイベントで別関数を呼び出す

という仕組みで処理をしなければいけません。
同期や戻り値という概念がありませんので。

ところで、IE限定で構わないなら、
showModalDialogというのがあって便利ですよ。
これなら、何も考えずにやりたいことができるかと思います。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-12-02 18:04
遅れまして、申し訳ありません。

できるだけ、if(confirm('..'))と言う処理に出来れば良いなと思ってました。
ただやっぱりそもそもが無理なような気がしました。

かつのりさんの教えてくださった、showModalDialogはwindowイベントなので、
できると思うのですが(本来はこのように使いたい)、confirmに確認用の
サムネイル画像を載せたいなどレイアウトを可変にするべくファイルの取得に
しています。

素直にcallBackを使うようにします。
ありがとうございました。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-12-02 18:58
引用:

かつのりさんの教えてくださった、showModalDialogはwindowイベントなので、
できると思うのですが(本来はこのように使いたい)、confirmに確認用の
サムネイル画像を載せたいなどレイアウトを可変にするべくファイルの取得に
しています。


どの解決方法を使われるのかは自由ですが、
showModalDialogで動的ページも開けますし、
親ウィンドウとのやり取りも自由です。
自由なデザインを通常のウィンドウと同じように動的に行えますよ。
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-12-05 01:41
ありがとうございます。

実は元々はshowModalDialogでIE向けのプログラムだったんですが、それをクロスブラウザ対応にすべく、JavascriptのUI機能が充実したツールを使ってます(Dojo)。

Choromeはいいですね!Javascriptの処理は恐ろしく早い!しかもIEのようにレイアウトもスムーズ。しかも前々から思ってたブラウザのツールバーの煩雑さもない(意外とPC使わない人はごちゃごちゃして嫌って人も多いのではないかと。私もOS再インストール時は全てカスタマイズして省いてますが、最近googleバーとかセキュリティソフトなんかも進出してきてるんですよね、ほとんど使わないし邪魔なんですけど・・)、前へ & 後ろへ & 更新 & URLアドレス。追加できると思いますがデフォルトはこうシンプルの方がいいですね、かなりお気に入りのブラウザになってます。

IEが後勝ってるのは(最後?)、画像のスムーズさだけですね。いよいよ、シフトしてくるかな?デフォルト搭載の強みはありますが・・。FireFoxは騒がれてるほど、使いやすいと思いませんが・・、FireBugだけですね。NNちっくなカクカクしたような感じがIEには遠く及ばないと思いますが・・。

脱線してしまいました。ありがとうございました。
1

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