Webview android滚动到点击时的特定ID

时间:2018-01-02 11:43:59

标签: javascript java android html webview

我正在使用Android webview,如果点击 55 ,数字将从 1-100 列出,页面必须滚动并转到第55个段,之后我可以向上或向下滚动,我发现我可以通过javascript实现它我尝试了类似

 content+="<div id="+i+">";
 i++;
 content += cursor.getString(cursor.getColumnIndex(VERSE_CONTENT));
 content+="</div>";

我为每个段落添加了一个ID

onclick

sample = dbhelper.getMonBookChap(bible, intent_bookid, intent_chapid);
sample = "<div style='line-height:150%;text-align: justify;'>" + sample + "</font></div>";
wv_Content.getSettings().setJavaScriptEnabled(true);
wv_Content.getSettings().setDomStorageEnabled(true);
wv_Content.addJavascriptInterface(new JavaScriptReceiver(this), "Android");
wv_Content.loadUrl("javascript:scrollToElement('" + intent_verseid + "')");

我创建了一个JavaScriptReceiver.java类,我不知道将javascript代码放在项目的哪个位置。

function scrollToElement(id) {
    var elem = document.getElementById(id);
    var x = 0;
    var y = 0;

    while (elem != null) {
        x += elem.offsetLeft;
        y += elem.offsetTop;
        elem = elem.offsetParent;
    }
    window.scrollTo(x, y);
}

1 个答案:

答案 0 :(得分:1)

<script>代码中将javascript添加到内容变量(您的html内容)的开头。

 String content ="<script>  
    function scrollToElement(id) {
        var elem = document.getElementById(id);
        var x = 0;
        var y = 0;

        while (elem != null) {
            x += elem.offsetLeft;
            y += elem.offsetTop;
            elem = elem.offsetParent;
        }
        window.scrollTo(x, y);
    }
    </script>";

   content += "<div id="+i+">";
     i++;
     content += cursor.getString(cursor.getColumnIndex(VERSE_CONTENT));
     content+="</div>";

还有一个建议,我建议在js中处理所有这些,我的意思是点击事件和滚动。没有打电话

wv_Content.loadUrl("javascript:scrollToElement('" + intent_verseid + "')");

,只需将一些类或id设置为div,然后从JS设置onclick。