お世話になります。
javascriptをあれもこれもと追加をしているとなぜか動かないことがあります。
デバックを見ても「エラーもない」なんてことがあります。
その場合、あるjsを削除すると動いたり、
「それぞれ単品では動くのに!」というような場合(俗に競合している?)
エラーが出ないものなのでしょうか?
また、追及する方法はありますでしょうか。
現状のjsはアラート用のjs、表示非表示用のjs、コピー用のjsというように
できることでファイルを分けています。
この分け方にも問題がありますでしょうか?
例えば同一のchangeイベントが点在しているとか。
同じ動きでもイベント毎に作った方がよいなど
アドバイスをいただければ幸いです。
青山昌司様
お世話になっております.
トヨクモの江田です.
競合でエラーが出るか否かはケースバイケースですね.
競合の結果,そもそも処理が呼ばれなくなったとなれば,エラーも出ません.
動いていない処理の近くに,
console.log(‘called’);
などを記述して,処理が呼ばれているか否か確認すると良いと思います.
kintone.events.on()に関しては,イベントハンドラーを追加するだけで,上書きはされません.
https://developer.cybozu.io/hc/ja/articles/201941954#step2
そのため,「同一のchangeイベントが点在している」こと自体は問題ないかと思います.
ただし,複数箇所でeventオブジェクトを書き換えてreturnしている場合は,競合の可能性があるかと思います.
江田様
お世話になります。
いつもご返信ありがとうございます。
console.log(‘called’);の「called」にはフィールドコードまたは
varで定めた文字列が入るという認識でよろしいでしょうか?
複数箇所でeventオブジェクトを書き換えてreturnしている場合というのは
具体的にどのような状態を指すのか知りたいのですが
お手すきのタイミングで結構ですので
ダメなケースとして具体例や参考サイトなどがありましたら
ご教授いただければ幸いです。
お手数をおかけいたしますがよろしくお願いいたします。
>console.log(‘called’);の「called」にはフィールドコードまたはvarで定めた文字列が入るという認識でよろしいでしょうか?
'called’という文字列のつもりで書きました.
その箇所が呼ばれれば,コンソール画面に’called’と表示されるはずです.
単純にその箇所が呼ばれているか否かを判断するだけですので,console.log(‘a’);などでも構いません.
>複数箇所でeventオブジェクトを書き換えてreturnしている場合
下記「sample.1js」は単体では動作しますが,「sample2.js」も読み込むと動作しないかと思います.
下記のようにどこかで「event.error」を指定している場合や,複数箇所で同じフィールドの値を書き換えようとしている場合などは競合の可能性があります.
・sample1.js
(function () {
"use strict";
kintone.events.on('app.record.create.change.数値', function (event) {
event.record.数値.value = 1;
return event;
});
})();
・sample2.js
(function () {
"use strict";
kintone.events.on('app.record.create.change.数値', function (event) {
event.error = 'エラー';
return event;
});
})();
江田様
お世話になります。
返事が遅れまして申し訳ございません。
まだ確認ができておりませんがご教授いただいた内容を確認させていただきます。
いつもご親切にありがとうございます。
今後ともよろしくお願いいたします。