ScrollPosition ist beim Navigieren zu anderen Seiten nicht auf „oben' eingestellt
P粉556159786
2023-08-30 09:07:14
<p>Die Webseite ist nach einem Master-Slave-Ansatz gestaltet. Der Master verfügt über Registerkarten (linker Bereich), die beim Klicken die entsprechenden Seiten in den Slaves (rechter Bereich) anzeigen. Zum Beispiel. Master verfügt über drei zwei Registerkarten „Schemas und Vorlagen“, auf denen das Schema standardmäßig angezeigt wird. Der Benutzer kann zwischen diesen beiden Seiten (von der Slave-Seite geladen) mithilfe der Registerkarten im linken Bereich (von der Master-Seite geladen) navigieren. </p>
<p>Wenn der Benutzer nun zu einer Position auf der Schemaseite scrollt und zur Vorlagenseite navigiert, wird die Scrollposition nicht auf „oben“ festgelegt. Das Scrollverhalten wird jedoch in der Routerdatei festgelegt. </p>
<pre class="brush:php;toolbar:false;">const createRouter = () =>
neuer VueRouter({
scrollBehavior: () => ({ x: 0, y: 0 }),
Routen:[
//hat alle Routen
]
});</pre>
<p>Wenn Sie einen Haltepunkt in der Nähe von scrollBehavior festlegen und beobachten, wird die Linie immer dann erreicht, wenn eine Navigation stattfindet, aber die Bildlaufposition wird beim Navigieren von der Architektur zur Vorlagenseite nicht auf oben gesetzt. </p>
<p>Wenn Sie jedoch zu einer bestimmten Stelle auf der Vorlagenseite scrollen und zur Architekturseite navigieren, wird diese Seite auf „oben“ gesetzt. </p>
<p>Ich habe auch versucht, die Funktion window.scrollTo(0, 0); in Mounted() in templates.ts zu schreiben. Auch wenn darauf geklickt wird, wird die Seite nicht nach oben gesetzt. </p>
<p>Kann jemand erklären, warum das passiert? Ich habe fast jede mögliche Lösung ausprobiert, die auf Stackoverflow aufgeführt ist. </p>
我在vue中也遇到这个问题。如果你想滚动到顶部,你将需要使用这个技巧。而不是
window.scrollTo(0, 0);
在 setTimeout 中使用它,超时时间很少。settimeout(()=>{ window.scrollTo(0, 0); }, 10)
希望这会有所帮助。