js更改本地html字体大小页面位置不发生改变

做html页面小说阅读器时,发现更改webview的字体后,原来的位置不见了,因此想从js入手,改变字体大小后也能回到原来位置


具体做法:

先初始化webview 以及websettings,我在外部做了几个按钮,用来改变字体大小,调用的代码如下;

	            String js1 = " index = 0;\n"
                            + " nearIndex = null;\n"
                            + " var scrollTop  = document.body.scrollTop;\n"
                            + " var tags = document.getElementsByTagName(\"body\")[0].children;\n"
                            + " getNearIndex(tags, scrollTop);\n";
                    String js = "var d = document.getElementsByTagName('body')[0];\n"
                            + " d.style.fontSize = '" + font_size + "px';\n";
                    String js2 = " indexTemp = 0;\n"
                            + " skipScroll(tags, nearIndex);\n";

                    mWebView.loadUrl("javascript:(function(){" + js1+js+js2 + "})()");
                    SPUtils.setInt(UIUtils.getContext(), "mobifont", font_size);
这是通常的js做法,我刚开始是直接用js那一句,改变字体大小会发生变化,所以我现在加了两句 js1 +js2


还有一步你需要在初始化过程之前(加载html之前),提前给html写入一段js进去 如下:

final String path = UIUtils.getAppFile() + dirname + "/jingjing.html";
        String comment = mobi.openMobi(mFilePath + mFileName, dirname);
        //解决打不开的mobi情况 1.''是代表c解析不了的格式,?J是代表乱改后缀的格式
        if (comment.equals(""))
            comment = "?J";
        if (!comment.equals("?J")) {
            //js代码
            String result = comment.replace("", "");
writeFile(result, path);
//webView.loadData(comment, "text/html; charset=UTF-8", null);
//init local file
mWebView.loadUrl("file://" + path);

提前写入备好的js根据滚动条位置查找最近P标签的位置。


这样就能使改变字体后也能回到原来位置的需求完成了。


最后附上在web端的代码:



你可能感兴趣的:(Android,Webview开发)