webview记录历史滚动位置

这个需求是需要记录当前网页滚动的位置,下次进来后仍然从这个位置开始。
实现这个需求有两种方法。
1)滚动webView,因为webView继承自view。所以只需要调用scrollTo方法来滚动即可(实测并不好用,会导致webview一部分显示不出来)
2)可以通过js和webview来回调。并通过持久化存储来记录对应webview的滑动尺寸。从而来解决这个问题。
html中只需要定义以下两个js方法。


// 获取滚动屏幕的高度
function getScrollWindow()
{
var heightTop=0;
if (document.documentElement && document.documentElement.scrollTop) {
heightTop = document.documentElement.scrollTop;
} else if (document.body) {
heightTop = document.body.scrollTop;
}
window.js.getScrollWindow(heightTop)
}

// 滚动位置
function scrollWindow(scroll)
{
window.scrollTo(0,scroll)
}

这两个方法为操作网页滚动的方法
app中需要创建表来做持久化存储。

使用的sql为:"CREATE TABLE IF NOT EXISTS  h5 (_id INTEGER primary key autoincrement, key TEXT, value TEXT,uid TEXT)";

并实现增删改查的方法。其中key为唯一标识,这里可以使用网页的地址做唯一标识。value是存储的位置,uid为具体的用户(可能存在多个用户登陆,这里分开标记)
原生中需要实现以下方法:
需要注意的是网页加载成功后,才能执行以下方法,这里可以放在webview的onPageFinished的回调中做以下处理

// 加载网页的最后滚动记忆点
private void loadLastPotion() {
loadUrl("javascript:scrollWindow('" + DLPaperView.this.mPosition +"')");
}
//当页面退出的时候进行保存即可
@JavascriptInterface
public void getScrollWindow(String position) {
// 进行持久化存储
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值