質問するログイン新規登録
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

4回答

3615閲覧

ブラウザで更新ボタンを押した時に、元の位置に戻らないようにしたい

nestle

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2023/09/30 13:52

0

1

実現したいこと

  • ブラウザで更新ボタンを押した時に、元の位置に戻らないようにしたい

前提

ブラウザで更新ボタンを押すと、ブラウザの標準の処理として更新前にスクロールしていた位置に強制的に戻されることが多いです。その挙動を実行せずに、常に特定の位置に固定で表示させたいです。アンカーリンクでの指定はしないで対応したいです。

試したこと

単純にJavaScriptやjQueryを使ってページに遷移した際に、特定の要素の位置まで移動させることはできるのですが、その後にブラウザの挙動で以前スクロールした位置に戻ってしまいます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

リロード時の処理で特定の位置へ予め移動しておけばいいと思います。

JavaScript

1window.addEventListener('beforeunload', e => { 2 // リロードする前に特定の位置へ予め移動しておく 3 window.scrollTo(0, 1000); 4});

この処理だとページ遷移した時や閉じた時も移動しますが、特に影響は無いと思います。

ロード時の処理で特定の位置へスクロールしてるなら
beforeunload時の処理はページトップに移動した方がいいかなと思います。

投稿2023/10/02 19:24

編集2023/10/02 19:34
CTRL-S

総合スコア197

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

単純にブラウザによるスクロール位置復元機能を抑止したいだけであれば
history.scrollRestoration = "manual" でいけるかもしれません。
https://developer.mozilla.org/ja/docs/Web/API/History/scrollRestoration
ただし、本来の使い方(履歴移動時のスクロール位置復元)の方で期待していない挙動になったりする可能性はあるので
使うのであればちゃんと検証した方がよいです。


単純にJavaScriptやjQueryを使ってページに遷移した際に、特定の要素の位置まで移動させることはできるのですが
質問に特に提示されていないのですが、これは具体的にどのようなコードを試したのでしょうか?
何かライブラリを使っていてそちらの影響があるとかでなければ、普通にloadイベント後にスクロール処理すれば問題なく動く気がします。

仮に例えば、『body以前にscript記述してる』&『loadイベント待たずに処理べた書きしてる』&『bodyがそれなりに大きくてDOM構築に時間がかかる』…みたいな前提条件で試してうまくいかなかった、という話であれば
単純にloadイベント後に処理を実行するように書き換えればそのままうまくいくのかもしれません。

投稿2023/10/02 08:21

pecmm

総合スコア760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

更新することによってページの内容が変更になっている場合もあるので、更新の制御はすべきではないと思います

投稿2023/10/02 02:03

yambejp

総合スコア117967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

performance.getEntriesByType('navigation') で返る配列の中に type プロパティが "reload" のものがあればリロードされたことがわかるので、そのときは目的の位置にスクロールすればよいでしょう。

投稿2023/10/02 01:05

int32_t

総合スコア21933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問