WebView打不开或者显示异常可能原因

news/2024/11/17 0:33:51/

原生对webview内的网页操作空间有限,基本上是设置的问题

可能的疑难杂症问题和解决方案

1.Cannot read property ‘XXX’ of undefined at null

解决方案:
webView.getSettings().setDomStorageEnabled(true);

HTML5 Storage主要有:
sessionStorage: 会话 (session) 级别的数据存储,会话结束后,相关的数据就会被清除掉。
localStorage: 用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
作为 html5 标准的一部分,绝大多数的浏览器都是支持 localStorage 的,但是鉴于它的安全特性(任何人都能读取到它,尽管有相应的限制,将敏感数据存储在这里依然不是明智之举),Android 默认是关闭该功能的。

参考Android WebView 无法打开天猫页面

2.混合https和http内容的时候,图片加载不出来,在浏览器中的Console会有如下警告- Mixed-content

解决方案:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

在Android5.0 以及以上的系统,当WebView加载的链接为Https开头,但是链接里面的内容,比如图片为Http链接,这时候,图片就会加载不出来,
从Android5.0以后,当一个安全的站点(https)去加载一个非安全的站点(http)时,需要配置Webview加载内容的混合模式,一共有如下三种模式:
MIXED_CONTENT_NEVER_ALLOW:Webview不允许一个安全的站点(https)去加载非安全的站点内容(http),比如,https网页内容的图片是http链接。强烈建议App使用这种模式,因为这样更安全。
MIXED_CONTENT_ALWAYS_ALLOW:在这种模式下,WebView是可以在一个安全的站点(Https)里加载非安全的站点内容(Http),这是WebView最不安全的操作模式,尽可能地不要使用这种模式。
MIXED_CONTENT_COMPATIBILITY_MODE:在这种模式下,当涉及到混合式内容时,WebView会尝试去兼容最新Web浏览器的风格。一些不安全的内容(Http)能被加载到一个安全的站点上(Https),而其他类型的内容将会被阻塞。这些内容的类型是被允许加载还是被阻塞可能会随着版本的不同而改变,并没有明确的定义。这种模式主要用于在App里面不能控制内容的渲染,但是又希望在一个安全的环境下运行。

常见的设置解释

settings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为falsesettings.setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
settings.setSupportZoom(true);//是否可以缩放,默认truesettings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认falsesettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式settings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题settings.setAppCacheEnabled(true);//是否使用缓存settings.setDomStorageEnabled(true);//DOM Storage// displayWebview.getSettings().setUserAgentString("User-Agent:Android");//设置用户代理,一般不用settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//加载https和http混合模式webview.setWebViewClient(new WebViewClient())//不设置 下一步的网页就会在原生浏览器中打开

其他设置
android 4.4以后webView的适配,setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN)失效,
更好替代方案
1.img后面加一个width=100%,或者是如果是加载的html,直接replaceAll(“< img “,”< img width=100% height=auto”)

2.参考Webview setLayoutAlgorithm


http://www.ppmy.cn/news/689354.html

相关文章

redis之主从复制、哨兵、集群

文章目录 一、redis的高可用1.1 redis高可用的概念1.2 Redis的高可用技术 二、redis 主从复制2.1主从复制的原理2.2搭建Redis 主从复制 三、Redis 哨兵模式3.1搭建Redis 哨兵模式3.2启动哨兵模式3.3查看哨兵信息3.4故障模拟 四、Redis 群集模式4.1搭建Redis 群集模式 一、redis…

windows10 计算机打不开怎么办,win10计算器打不开怎么解决|win10打开计算器的方法...

最近笔记本上的win10出了一些小问题&#xff0c;关联程序老是有提醒&#xff0c;恢复成默认状态&#xff0c;此外就是计算器打不开了。下面就跟大家说说win10计算器打不开怎么解决。 win10打开计算器的方法: 1、计算器是缺省安装的应用&#xff0c;打开右下角的开始窗口后&…

计算机 控制面板都打不开怎么办,控制面板打不开怎么办?控制面板打开办法大全...

控制面板真的很好用,在我们电脑卡机的转态下,打开控制面板一键关掉所有应用程序,不要太方便哦。还有的小伙伴喜欢用控制面板打开关闭程序呢。不过控制面板打不开怎么办?贤集网的小编今天就给大家带来了控制面板打开办法大全,里面准保有解决办法。 控制面板打不开怎么办 1.…

网站打不开怎么检查服务器,检查网站打不开的三种原因

自己做了网站之后&#xff0c;如果在实际访问中&#xff0c;出现了网站打不开的情况&#xff0c;怎么去查找什么原因导致了网站打不开呢&#xff1f;可以通过下面三个方面去检查一下到底自己做网站时哪里出现了问题。 一、检查网站域名是否出问题。 网站在线方式有二种&#xf…

为什么复制的html图片打不开,网页中的图片打不开是什么原因?

2018-04-30 浏览网页图片打不开.怎么办&#xff1f; 问题分析&#xff1a;导致此问题一般由于浏览器故障或者当前网络延迟解决方案一&#xff1a;1。 打开浏览器在右上方选择“工具”---“internet选项”2。 然后在常规下面选择“删除”勾选里面所有的选项&#xff0c;然后点击…

用Java制作简单的记事本

目录 前言 主界面设计 功能实现 打开 另存为 保存 查找 替换 成员变量 其他方法 警告弹窗 不移动光标更新文本框内容 源代码 总结 转载请注明出处&#xff0c;尊重作者劳动成果。 前言 考完试想写敲一下代码就写了一下这个程序&#xff0c;整个也是写了怎么久…

JS前端中模版字符串的坑。。

项目中遇到一个前端向后端请求数据的&#xff0c;将pageNum和pageSize 都拼接到url上了。结果发现&#xff0c;明明前端传的pageNum 1&#xff0c; pageSize 10&#xff0c;但是到了后端接收到的却是 pageNum 1&#xff0c;pageSize 10 &#xff0c;pageSize的10后面凭空多了…

苹果手机图片如何同步鸿蒙,教你将照片批量导入iOS设备

日前&#xff0c;锋友“雪莉糍fino”分享了一个通过 iTools 工具将照片批量导入 iPhone 或者 iPad 的方法&#xff0c;导入完成之后还可以在 iPhone 或者 iPad 上删除照片。他表示&#xff0c;使用 iTunes 导入的照片并不能在手机端/平板端删除。 下载 iTools 工具之后&#xf…