検索

ホームページ  >  に質問  >  本文

他のページに移動するときに ScrollPosition が先頭に設定されない

<p>Web ページはマスター/スレーブ アプローチを使用して設計されています。マスターにはタブ (左ペイン) があり、クリックするとスレーブ (右ペイン) の対応するページが表示されます。例えば。 master には「スキーマとテンプレート」という 2 つのタブが 3 つあり、デフォルトでスキーマが表示されます。ユーザーは、左側のペイン (マスター ページによってロードされる) のタブを使用して、これら 2 つのページ (スレーブ ページによってロードされる) 間を移動できます。 </p> <p>ユーザーがスキーマ ページ内の任意の位置までスクロールしてテンプレート ページに移動すると、スクロール位置は先頭に設定されません。ただし、スクロール動作はルーターファイルで設定されます。 </p> <pre class="brush:php;toolbar:false;">const createRouter = () => new VueRouter({ スクロール動作: () => ({ x: 0, y: 0 })、 ルート:[ //すべてのルートを持っています 】 });</pre> <p>scrollBehavior の近くにブレークポイントを設定して観察すると、ナビゲーションがあるたびに行がヒットしますが、アーキテクチャからテンプレート ページに移動するときにスクロール位置が先頭に設定されません。 </p> <p>ただし、テンプレート ページ内の特定の場所までスクロールしてアーキテクチャ ページに移動すると、そのページが先頭に設定されます。 </p> <p>templates.ts の Mounted() 内に window.scrollTo(0, 0); 関数を書いてみました。クリックしてもトップには表示されません。 </p> <p>なぜこれが起こっているのか説明できる人はいますか? stackoverflow にリストされているほぼすべての可能な解決策を試しました。 </p>
P粉556159786P粉556159786485日前575

全員に返信(1)返信します

  • P粉248602298

    P粉2486022982023-08-31 00:14:03

    私も vue でこの問題に遭遇しました。一番上までスクロールしたい場合は、このトリックを使用する必要があります。 window.scrollTo(0, 0); の代わりに setTimeout で使用すると、タイムアウトが非常に小さくなります。
    settimeout(()=>{ window.scrollTo(0, 0); }, 10)
    お役に立てれば。

    返事
    0
  • キャンセル返事