【问题标题】:Navigating to a specific section of a page in windows 8 Javascript App在 Windows 8 Javascript App 中导航到页面的特定部分
【发布时间】:2012-12-05 06:56:08
【问题描述】:
我正在使用 JavaScript 和 HTML 开发一个 Windows 8 应用程序。
我有一个水平放置不同部分的页面。我在另一个页面中有这些部分的链接。我希望页面从该特定部分加载(意味着页面应从该部分开始)。
我正在使用网格模板并在主页中有一个列表视图。当我单击组中的任何项目时,导航到该页面并返回主页。我希望从我之前选择的部分加载主屏幕。屏幕应该自动滚动到该部分,就像从语义缩放中发生的那样。
在这方面的任何帮助都会非常有用。
谢谢
【问题讨论】:
标签:
windows-8
windows-store-apps
【解决方案1】:
对于第一部分,将容器的scrollLeft属性设置为要滚动到的元素的offsetLeft属性就足够了。
第二部分可以通过在导航离开之前存储ListView的scrollPosition属性并在导航回来之后将其设置为旧值来实现。
【解决方案2】:
正如 Ma_li 所说,向左滚动是一种解决方案——尤其是对于 非 ListView 内容。这里的关键是您在返回时想要保持多少体验。一种选择(同样,对于非列表视图内容)是找到您想要在屏幕上显示的元素,然后在该元素上调用 scrollIntoView。 但是,这只会将项目 on 带到屏幕上——它不会一直将它带到左边(或右边,对于 BIDI 语言),它会滚动 足够在屏幕上显示整个元素。
对于 ListViews,您应该使用 indexOfFirstVisibleItem(或 indexOfLastVisibleItem)将列表视图滚动到正确的位置。这是关键,因为 listview 是一个虚拟化控件,这为滚动 listview 位置提供了最准确可靠的方法。
【解决方案3】:
感谢多米尼克和邮件
我为第一个问题尝试了 document.getElementBy("Id").focus() 并且它有效。但我在这方面遇到了问题。
我有四个 div 横向说“divA divB divC divD”
divA 的数据来自云端。当我单击主屏幕中的 divD 链接时。它不是第一次带我到相应的部分,因为加载 divA 需要一些时间。当第二次单击 divD 的链接时,它会转到相应的部分。如果我使用 setInterval() 可以正常工作,但是当页面加载时 DivA 会显示几秒钟,然后滚动到 divD,这是不好的。