WebView与js调用的一个坑

public class MainActivity extends AppCompatActivity {
  private WebView mWebView = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showWebView();
}

private void showWebView() {

    mWebView = (WebView) findViewById(R.id.mWebView);
    WebSettings webSettings = mWebView.getSettings();
    // 设置android下容许执行js的脚本
    webSettings.setJavaScriptEnabled(true);
    mWebView.loadUrl("file:///android_asset/hello.html");

    // 这里加载数据不会显示,因为hello.html还没加载完成,所以没有显示
  //        String content = "{\"content\":\"\\u003cdiv\\u003e\\u003cp\\u003e由日本厂商NEXON推出的战略RPG手游新作《奇想之战》于7月28日在iOS/Android平台正式上线!\\u0026nbsp;\\u003c/p\\u003e\\u003cp\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201607/14697849067464_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"2\\\"/\\u003e\\u003c/p\\u003e\\u003cp\\u003e本作是一款融合了地形、相性等战略要素的“进化型”战略RPG游戏,讲述作为天才魔法使的主人公和他的同伴们拯救世界的冒险故事。\\u003c/p\\u003e\\u003cp\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057507557_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"3\\\"/\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057538582_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"4\\\"/\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057587465_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"5\\\"/\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057613407_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"6\\\"/\\u003e\\u003c/p\\u003e\\u003cp\\u003e为纪念游戏正式上线,游戏开服后2周内登录游戏的全体玩家都将获得限定道具。\\u003c/p\\u003e\\u003cp\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201607/14697850097742_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"4\\\"/\\u003e\\u003c/p\\u003e\\u003cp\\u003e官网地址:\\u003ca href\\u003d\\\"http://mobile.nexon.co.jp/fwt\\\"\\u003ehttp://mobile.nexon.co.jp/fwt\\u003c/a\\u003e\\u003c/p\\u003e\\u003cp\\u003e\\u003cbr/\\u003e\\u003c/p\\u003e\\u003c/div\\u003e\",\"title\":\"战略RPG手游新作《奇想之战》正式上线\"}\n";
//        mWebView.loadUrl("javascript: showHtmlcallJava2(" + content + ")");

    mWebView.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            //这里加载数据是有效的,hello.html已经加载完成了。
            String content = "{\"content\":\"\\u003cdiv\\u003e\\u003cp\\u003e由日本厂商NEXON推出的战略RPG手游新作《奇想之战》于7月28日在iOS/Android平台正式上线!\\u0026nbsp;\\u003c/p\\u003e\\u003cp\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201607/14697849067464_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"2\\\"/\\u003e\\u003c/p\\u003e\\u003cp\\u003e本作是一款融合了地形、相性等战略要素的“进化型”战略RPG游戏,讲述作为天才魔法使的主人公和他的同伴们拯救世界的冒险故事。\\u003c/p\\u003e\\u003cp\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057507557_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"3\\\"/\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057538582_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"4\\\"/\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057587465_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"5\\\"/\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201606/14665057613407_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"6\\\"/\\u003e\\u003c/p\\u003e\\u003cp\\u003e为纪念游戏正式上线,游戏开服后2周内登录游戏的全体玩家都将获得限定道具。\\u003c/p\\u003e\\u003cp\\u003e\\u003cimg src\\u003d\\\"http://qn.18touch.com/uploads/acg201607/14697850097742_water.jpg\\\" width\\u003d\\\"600\\\" alt\\u003d\\\"4\\\"/\\u003e\\u003c/p\\u003e\\u003cp\\u003e官网地址:\\u003ca href\\u003d\\\"http://mobile.nexon.co.jp/fwt\\\"\\u003ehttp://mobile.nexon.co.jp/fwt\\u003c/a\\u003e\\u003c/p\\u003e\\u003cp\\u003e\\u003cbr/\\u003e\\u003c/p\\u003e\\u003c/div\\u003e\",\"title\":\"战略RPG手游新作《奇想之战》正式上线\"}\n";
            mWebView.loadUrl("javascript: showHtmlcallJava2(" + content + ")");
        }
    });
}

}

其中的hello.html如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-store,no-cache">
    <meta name="Handheldfriendly" content="true">
    <meta name="viewport" content="width=100%; initial-scale=1.0; user-scalable=yes">
    <meta name="robots" content="all">
    <meta name="keywords" contect="doodle, mobile, doodlemobile, game, games">
    <meta name="description" content="Make People&#39;s Mobile Life More Connected Through Games.">

    <meta charset="UTF-8">
    <meta content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width"
        name="viewport">
    <link rel="stylesheet" type="text/css" href="css/css.css">
    <script src="js/jquery.min.js"></script>

    <title>jsandroid_test</title>
    <script type="text/javascript" language="javascript">
    //此方法是调用了android的方法HtmlcallJava2()
    function showHtmlcallJava2(json){

        $(".news-content-block .title h1").html(json.title);
        $(".news-content-block .news-content").html(json.content.replace(/_ueditor_page_break_tag_/g,""));

        //调用android中的方法
        window.jsObj.HtmlcallJava2(str+","+str1);
        }

    </script>

</head>

<body>

<section>
    <article class="news-content-block">
        <div class="news-content-block-hd">
            <div class="title">
                <!-- 文章标题-->
                <h1></h1>
            </div>
        </div>

        <div class="news-content-block-bd">
            <!--文章内容-->
            <div class="news-content"></div>
        </div>
    </article>
</section>

</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容