新規投稿
フォローする

app.record.detail.showで画面を一番下へスクロールしたい

プログラミングを初めたての初心者です。

タイトルの通りレコード詳細画面を開いたときに自動で画面を一番下まで動かしたいです。以下のコードを試してみたのですが、app.record.index.showなどでは動きますがapp.record.detail.showに変えると動かなくなくなります。エラーも出ません。

eventオブジェクトを使用してないので動くと思ったのですが、何か見落としている点があれば教えてくださると嬉しいです。

(function() {
"use strict";
kintone.events.on('app.record.detail.show', function (){
 
  var a = document.documentElement;
var y = a.scrollHeight - a.clientHeight;
window.scrollTo(0, y);

0

6件のコメント

Avatar
FM

上記コードそのまま使用してみましたが、詳細画面表示時にスクロールされるのを確認しました。
コードが中途半端に終わってるのは貼り付けミスかと思いましたが、)や}でしっかり閉じていますでしょうか?

(function() {
"use strict";
kintone.events.on('app.record.detail.show', function (){
 
var a = document.documentElement;
var y = a.scrollHeight - a.clientHeight;
window.scrollTo(0, y);

})
})();
1
Avatar
ikusaka

FM 様

早々のお返事ありがとうございます。

ご指摘の通り)や}できちんと閉じているのを確認しましたが、こちらでは思うように動きませんでした。

念のためそちらのコードを新しいアプリを用いて動かしてみましたが、何も起こりませんでした。

そちらが正常に動いたということはコードは合ってることが分かりましたのでこちらの環境のせいかと思われます。

それが分かっただけでもありがたいです。原因を探ってみます。ありがとうございました。

0
Avatar
FM

ブラウザの問題かとも思い、Chrome・Edge・IEで試しましたが正常に動作していました。(win10)

解決できるか確証はないですが、気になるページを見つけたので参考までに。

window.scrolltoが機能しない
Windows Phoneでwindow.scrollToが動作しなかったので、setTimeoutを使ったら動いた。

1
Avatar
ikusaka

FM 様

こちらはChromeでwin10なのでブラウザによるものではなさそうですね。

URLありがとうございます。下記のようにsetTimeoutを追加してみるとb is not a functionというエラーが出てしまい動きませんでした。

太字の部分を kintone.events.on('app.record.detail.show',function () {
setTimeout(function () {にするとエラーこそ無くなりましたが動きませんでした。

おかげさまで原因は絞れてきたと思います。ご協力感謝いたします。

(function() {
"use strict";
kintone.events.on('app.record.detail.show',window.setTimeout( function (){
 
  var a = document.documentElement;
var y = a.scrollHeight - a.clientHeight;
window.scrollTo(0, y);

},0));
})();

0
Avatar
FM

下記のコードで動作確認できました。

OSもブラウザも同じとなると、あとは他にapp.record.detail.showを使用しているjsを適用していませんか?
それらの適用を一旦外すか、またはeventオブジェクトをreturnするよう追記してください。(eventオブジェクトを操作していなくても)

(function() {
"use strict";
kintone.events.on('app.record.detail.show', function (){
 
var a = document.documentElement;
var y = a.scrollHeight - a.clientHeight;

window.setTimeout(
window.scrollTo(0, y)
, 1200);

//window.scrollTo(0, y);

})
})();
1
Avatar
ikusaka

FM様

日を跨いでの回答ありがとうございます。再びこのjsしかないアプリで色々試してみたのですが、

どうやらページの読み込みが遅く、setTimeoutでもっと後に動くようにしないとダメだということが分かりました。

新しいアプリですと少ない待機時間で動きましたので、こちらのアプリが重いとか、ネットワーク環境が原因かと思われます。

これからはアプリをより軽くして時間を少なくしたいと思います。何度もご協力ありがとうございました!

(function() {
"use strict";
kintone.events.on('app.record.detail.show', function () {
setTimeout(function () {
var a = document.documentElement;
var y = a.scrollHeight - a.clientHeight;
window.scrollTo(0, y);

}, 2000);
});
})();

1
ログインしてコメントを残してください。