获取UIWebView当前滚动偏移量的div

4
我有两个不同的HTML文件、两个不同的UIWebViews和一个UISegmentControl。在segmentChanged时,我通过加载HTML文件来显示WebView。这两个HTML文件都只包含共同的部分,只是内容不同。现在,当用户阅读第一个WebView1.1节并单击加载第二个WebViewSegment时,第二个WebView需要向上滚动到他在第一个WebView中阅读的1.1节,反之亦然。同时,有n个节。我使用了以下javascript,但它需要当前div id的参数。但是在scroll时,如何获取当前可见的div id?我为每个div指定了id
function pointInView(id)
{
    var divid = document.getElementById(id);
    divid.scrollIntoView(true);
    return false;
}

有人能帮我吗?

4个回答

2
我认为jQuery可能能够帮助你。
既然它是跨浏览器兼容的,那么你可以使用jQuery吗?
https://dev59.com/VW435IYBdhLWcg3wigux

查看BenM的答案表单


以上链接基本上是针对JQuery的,但我想要它用Javascript编写。 - Girish
同一个链接还有一个 JavaScript 实现,如下所示 jQuery 的实现。 - nolimitsdude

1
你并不需要为此创建数据库条目。只需通过类似以下的方式捕获点击事件即可:
$('.action').click(function(){
    document.location = yourSecondFIleLocation+'?offset = ' + $('selectorDiv').detOffsetFromParentDiv(); //or get the scroll offset from the page.
});

请用php或jQuery在第二页捕捉它并滚动到它。

如果你在代码中添加段落标记并正确链接到它们,这甚至是可实现的。


我没有在webview中点击任何地方,只是滚动它。 - Girish
然后就可以在滚动条上添加事件监听器,并在切换到其他窗口时获取位置。 - Sangoku

1

我搜索了很多内容来获取当前滚动偏移量的div id,但没有找到解决方案。所以我选择了另一种选项,即在两个文件中存储每个部分的起始和结束偏移量。因此,我创建了一个数据库查找表,并在其中存储了每个部分在两个文件中的起始和结束偏移量。

例如,当用户将第一个webview滚动到1.1节并单击开关以打开第二个webview时,我会将第二个webview滚动到第二个文件中的1.1节。


0
请尝试以下方法:
要在任何位置滚动任何滚动视图,我们需要设置滚动视图的内容偏移量。为了解决您的问题,我们有两个解决方案:
  1. 在您的情况下,当用户查看第一个 Web 视图时,请将第一个 Web 视图的内容偏移保存在任何变量中,例如: CGFloat offset = webView1.scrollView.contentOffset.y; 然后当您打开第二个 Web 视图时,将此偏移值提供给第二个 Web 视图的滚动偏移。

  2. 根据您的需求设置 webView1.scrollView.contentOffset=webView2.scrollView.contentOffset 或者反之亦然

我希望这能帮到您。

但是两个文件的偏移量不同,只有部分相同。 - Girish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接