いいね!数

0

閲覧数
2468

お世話になります。
ボタンクリックイベントに文書の保存→スクリプトの実行(Javascript(サーバーサイド))→ページを開くの流れで処理を入れています。
新規文書作成時にこのボタンをクリックすると1度目のクリックでは反応せず、2回目のクリックで正常に処理されます。
なぜ1度目のクリックで反応しないのかが分からず、同現象をご存知の方がおられましたら対策方法をご教示ください。
一度保存した文書を編集モードで開き同ボタンをクリックする場合は、通常どおり1回目のクリックで処理されます。
尚、Javascript(サーバーサイド)の処理自体を別のJavascript(サーバーサイド)の処理にしても同現象です。

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:2017/03/10 13:39:01

回答・コメント

いいね!数

0

こんにちわ。

「反応しない」というのは、ボタンに書いてるonClickイベントが、全く走らない、という意味ですか?

単に新規作成直後は、ボタン押下時に走るSSJSの処理に間違いがあって、ページの更新処理が動いてないとかじゃないですか?

ボタンに書いてる処理を機密に関係しないよう、うまく書き直して見せてくれればなにかわかるかも。

/Yac

回答日時:2017/03/10 17:31:55

いいね!数

0

yac4423様

ありがとうございます。
1回のクリックで終わると、最初の文書の保存がされませんので、全くクリックイベントが処理されていないような状態です。
2回目のクリックで、スクリプトの処理も全てされるので、スクリプト自体は問題ないかと思います。
尚、スクリプトは以下の通り、メールを送信するエージェントを実行しています。
他のスクリプトにしても、同様の現象なので、サーバーサイドスクリプトを実行するときのオプション設定のような問題があるのかな?
とも思いましたが・・・・。

// お知らせメールの送信
 var agent = database.getAgent("SendNotificationMail");
 var doc = document1.getDocument();
 agent.runWithDocumentContext(doc);
 doc.recycle();
 agent.recycle();
 

回答日時:2017/03/13 9:36:03

いいね!数

0

これだけじゃ断言できないけど、"SendNotificationMail"というエージェントが原因じゃないのかな。

ボタン押下でSSJS走らせるのに特に工夫はいらないですよ。

単にエージェント内で文書保存してるけどビューの選択式の関係で保存されてないようにみえるだけとか。

/Yac

回答日時:2017/03/13 12:31:53

いいね!数

0

yac4423様
ボタン押下でSSJS走らせるのに特に工夫はいらないですよとのことで、別のところを見ていたら、
原因個所が分かりました。
フォームのリッチテキストフィールドのOnChangeイベントに下記のとおり、フィールドの値をテキスト変換し、その後別のテキストフィールドへ
コピーする処理を入れていたのですが、これがあると保存のクリックイベントがOnChangeイベントの処理後?に止まるようです。
下記の処理を保存ボタンのクリックイベントの中に移行したら、正常に一度で処理されるようになりました。
なぜOnChangeイベントにあるとこのような現象となるのかは、理解出来ていませんが、一応問題は解決しました。

var rtxt = getComponent("Detail").getValue();
var txt = @Text(rtxt);
getComponent("Detail_Text").setValue(txt);

回答日時:2017/03/13 15:49:40