Android WebView使用时JS的坑

                                          Android WebView使用时JS的坑

       这一周一直在搞学校就业指导中心的几个项目,听说是教育部有领导来视察,要我们来收拾学长以前帮就业指导中心做的几个项目的烂摊子,其实也不算烂摊子,我们算是完全重新开发吧,连以前的算法都用不了,还好当时机智,没有在以前的项目基本上改,否则这周估计都是在看代码了。言归正传,讲讲Android WebView的坑。说起来真的超级惭愧,这个坑本来完全是我Android端的问题,却让前端的妹子改了三四个小时的代码。事情大概是这样的,一个项目是前端做html+css+js的纯前端,然后放到Android项目的assets目录下,让WebView去加载网页,前面有几个项目也是这样做的,但是却在这个项目时工作得不好,当点击一个页面跳转时,总是跳转不了,这个页面跳转是JS控制的,其实就是用JS控制一个DIV隐藏另一个DIV显示,就相当于自己做了一个模态框。那妹子做好了之后可以在浏览器中正常工作,但在我用WebView包装的Android APP里老是不能工作。我觉得肯定是JS的问题,因为我觉得前面几个这种项目Android端也是这样写的,肯定不是我Android端的问题。然后我就一直让她改,让她把div显示与隐藏改成html跳转,但还是不能正常工作,然后我觉得可能是在本地不能正常工作,我就让她部署到云服务器上,但依然不行,反正这样改来改去,就改了三四个小时,而我又在管其他几个项目,我要管所有的Android项目,还要统筹所有的前端后端的东西,再加上这周每天几乎都只睡了三四个小时,脑袋实在有点晕,我就一直想是JS的问题。最后忙完了其他几个项目,就剩她这个项目的问题了,然后我就一直查WebView的一些使用细节,无意间,她跟我说她在JS中使用了Localstorage,问我是不是这个问题,然后我就百度了一下,在Android 的WebView使用时,确实会有这方面的问题,WebView默认是不支持Localstorage的。下面把代码贴一下

package benson.com.workreadysystem;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

//    private static final String URL = "http://career.sumixer.com:8084/workready/index2";
    private static final String URL = "file:///android_asset/index2.html";

    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        webView.setWebChromeClient(new WebChromeClient());

        //支持App内部javascript交互

        webView.getSettings().setJavaScriptEnabled(true);

        //自适应屏幕

        webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

        webView.getSettings().setLoadWithOverviewMode(true);

        //设置可以支持缩放

        webView.getSettings().setSupportZoom(true);

        //扩大比例的缩放

        webView.getSettings().setUseWideViewPort(true);

        //设置是否出现缩放工具

        webView.getSettings().setBuiltInZoomControls(true);
        
        //这几行是localstorage添加的
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setAppCacheMaxSize(1024*1024*8);
        String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
        webView.getSettings().setAppCachePath(appCachePath);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setAppCacheEnabled(true);

        webView.loadUrl(URL);
    }

    @Override
    public void onBackPressed() {
        webView.loadUrl(URL);
    }
    private volatile boolean pressed = false;
}

加上Localstorage支持后前面所说的问题就解决了,无端让前端妹子浪费了三四个小时,真的很sorry。最后她跟我说她早就跟我提过JS中使用了Localstorage,问我是不是Localstorage的问题,但我当时太忙了,没太在意她说的,悲剧就这样产生了,说实在的,责任完在我。真的很对不起前端妹子。7月份就要出去实习了,也祝妹子去腾讯能够工作顺利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值