Kintone スマホ用JS

基本的なことなのですが、JSAPIでカスタムする場合、PC用とスマホ用で分けてコードを書かなくてはいけないのでしょうか?また、それはなぜでしょうか?

どこかマニュアル等でその点に触れている個所があれば見つけることができなかったのでご教示いただきたいです。

 

また、実際以下のように併記してもスマホ版では期待した動作をしてくれません。

jQuery.noConflict();
(function($) {
“use strict”;

var events =[
‘app.record.index.edit.show’,
‘app.record.edit.show’,
‘app.record.create.show’,
‘mobile.app.record.index.show’,
‘mobile.app.record.edit.show’,
‘mobile.app.record.create.show’
]

kintone.events.on(events, function(event) {
//適用ルートを編集不可
event.record[‘adopt_root_dl’][‘disabled’]=true;
//承認フラグを編集不可
event.record[‘LeaderApr’][‘disabled’]=true;
event.record[‘COApr’][‘disabled’]=true;
event.record[‘INVApr’][‘disabled’]=true;
event.record[‘FPApr’][‘disabled’]=true;
event.record[‘AAApr’][‘disabled’]=true;
event.record[‘MGRApr’][‘disabled’]=true;
event.record[‘CEOApr’][‘disabled’]=true;
event.record[‘CCApr’][‘disabled’]=true;
event.record[‘ICApr’][‘disabled’]=true;
event.record[‘BMApr’][‘disabled’]=true;
event.record[‘EOApr’][‘disabled’]=true;
event.record[‘IBMApr’][‘disabled’]=true;
//承認日付ならびに稟議番号を編集不可
event.record[‘ApprovedDate’][‘disabled’]=true;
event.record[‘ApprovalNum’][‘disabled’]=true;
event.record[‘ApprovalYear’][‘disabled’]=true;
event.record[‘uniqueNum’][‘disabled’]=true;

return event;

});

 

スマホ用のJSファイルに個別に以下の通り作成しても動作してくれません。。

jQuery.noConflict();
(function($) {
“use strict”;

var events =[
‘mobile.app.record.index.show’,
‘mobile.app.record.edit.show’,
‘mobile.app.record.create.show’
]

kintone.events.on(events, function(event) {
//適用ルートを編集不可
event.record[‘adopt_root_dl’][‘disabled’]=true;
//承認フラグを編集不可
event.record[‘LeaderApr’][‘disabled’]=true;
event.record[‘COApr’][‘disabled’]=true;
event.record[‘INVApr’][‘disabled’]=true;
event.record[‘FPApr’][‘disabled’]=true;
event.record[‘AAApr’][‘disabled’]=true;
event.record[‘MGRApr’][‘disabled’]=true;
event.record[‘CEOApr’][‘disabled’]=true;
event.record[‘CCApr’][‘disabled’]=true;
event.record[‘ICApr’][‘disabled’]=true;
event.record[‘BMApr’][‘disabled’]=true;
event.record[‘EOApr’][‘disabled’]=true;
event.record[‘IBMApr’][‘disabled’]=true;
//承認日付ならびに稟議番号を編集不可
event.record[‘ApprovedDate’][‘disabled’]=true;
event.record[‘ApprovalNum’][‘disabled’]=true;
event.record[‘ApprovalYear’][‘disabled’]=true;
event.record[‘uniqueNum’][‘disabled’]=true;

return event;

});

原因はどこにあるのでしょうか?

よろしくお願い申し上げます。

ryoryo さん

PC用とスマホ用で分けてコードを~ というのは以下のことと思って大丈夫です?

・ファイルを2個にわけないといけないのか

全部の関数は試してないですけど、ぶっちゃけた話、PC では、PC用の関数、スマホではスマホ用の関数しか動かないと思うので、

処理を書くファイル自体は、1個にまとめても特に問題はないはずですよ。

ただ、個人的な話をすると可読性の問題で分けたほうが読みやすくはなると思います。

動かない理由は恐らく、即時関数の最後の () がないので JavaScript 自体が動作していないのだと思います。

上下の処理どちらでもいいのですが、最後に () をつけたファイルをスマートフォン用のJavaScript 設定してみてください。

しぶい様

コメントありがとうございます。

失礼しました、実際には即時関数として以下のようにコードを記載しておりますがスマホでは動作してくれません。

もちろんスマホ用Javascriptにも設定しているのですが。

反対にPC用では適切に動作しております。

たびたび恐れ入りますが、よろしくお願い申し上げます。

(function($) {
“use strict”;

var events =[
‘app.record.index.edit.show’,
‘app.record.edit.show’,
‘app.record.create.show’,
‘mobile.app.record.index.edit.show’,
‘mobile.app.record.edit.show’,
‘mobile.app.record.create.show’,
]

kintone.events.on(events, function(event) {
//適用ルートを編集不可
event.record[‘adopt_root_dl’][‘disabled’]=true;
//承認フラグを編集不可
event.record[‘LeaderApr’][‘disabled’]=true;
event.record[‘COApr’][‘disabled’]=true;
event.record[‘INVApr’][‘disabled’]=true;
event.record[‘FPApr’][‘disabled’]=true;
event.record[‘AAApr’][‘disabled’]=true;
event.record[‘MGRApr’][‘disabled’]=true;
event.record[‘CEOApr’][‘disabled’]=true;
event.record[‘CCApr’][‘disabled’]=true;
event.record[‘ICApr’][‘disabled’]=true;
event.record[‘BMApr’][‘disabled’]=true;
event.record[‘EOApr’][‘disabled’]=true;
event.record[‘IBMApr’][‘disabled’]=true;
//承認日付ならびに稟議番号を編集不可
event.record[‘ApprovedDate’][‘disabled’]=true;
event.record[‘ApprovalNum’][‘disabled’]=true;
event.record[‘ApprovalYear’][‘disabled’]=true;
event.record[‘uniqueNum’][‘disabled’]=true;

return event;

});

var events2=[
‘app.record.detail.show’,
‘app.record.edit.show’,
‘app.record.create.show’,
‘mobile.app.record.detail.show’,
‘mobile.app.record.edit.show’,
‘mobile.app.record.create.show’
]

kintone.events.on(events2, function(event){
kintone.app.record.setFieldShown(‘ApprovalYear’, false);
kintone.app.record.setFieldShown(‘uniqueNum’, false);

alert(‘hello’)//これすら実行されない

return event;
});
})(jQuery);

ryoryo さん

即時関数の件については、失礼しました。

ただ、いただいたコードの中身変えて、検証したのですが、自分は動いたので原因が特定できてないですね。。。

alert() すら実行されないというのが、気になるので、

URL欄に https://{サブドメイン}.cybozu.com/k/m/{アプリID} を入力して開発者ツールにエラーが出てないかデバッグをお願いしてもいいですか。

しぶい様

ご回答ありがとうございます。

悪戦苦闘していたのですが、結果解決いたしました。

まったく気づいていなかったのですがスマホ用JSを作成して、かつJquery等の外部ライブラリを利用する際には

スマホ用JS側でもJqueryのCDNを設定しなくてはいけなかったようで、これをせずに})(Jquery)としていたせいで

動作をしていなかったようです。

外部ライブラリはPC用もスマホ用も共通してCDNが参照されるという先入観があり

これが原因でした。

いずれにしても、お力添えをいただきましたことについて、深く御礼を申し上げます。

よろしくお願い申し上げます。

 

 

ryoryo さん

ごめんなさい。そっちの考慮はできてなかったですね。

解決してよかったです。

しぶい様

そんな善意でご回答いただいているのにごめんさないだなんて。。

お力添えに本当に感謝です。。

宜しくお願い申し上げます。