WebView错误截断长URL内容无法正常展示,该如何修复?
这个问题是因为长URL属于无空白字符的连续字符串,WebView默认的文本换行规则不会对这类连续非中文字符串自动折行,因此会出现内容超出容器宽度被截断的情况,可以按照以下方案修复:
方案1:网页端CSS修复(适配性最高,优先选择)
给承载文本的DOM元素添加如下CSS属性即可生效:
/* 允许长单词/连续字符串在容器边界换行 */ word-wrap: break-word; /* 强制任意字符处换行,适配长URL场景 */ word-break: break-all; /* 兼容旧版WebView内核可额外添加以下属性 */ white-space: pre-wrap;
如果是你自主可控的H5页面,直接将上述样式写入全局CSS或对应文本容器的样式规则中即可;如果需要加载第三方不可修改的网页,可通过WebView的JS注入接口动态将这段CSS插入到页面的样式表中。
方案2:Android原生端配置补充
如果CSS注入操作不便,可以配合修改WebView原生配置:
- 开启WebView标准布局算法,适配文本自动换行:
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); - 关闭横向滚动能力,避免内容横向溢出:
webView.setHorizontalScrollBarEnabled(false); webView.getSettings().setUseWideViewPort(false);
方案3:iOS原生端WKWebView配置补充
iOS端使用WKWebView时,可在创建WKWebViewConfiguration时配置文本适配规则,也可以直接在页面加载完成后通过JS注入上述CSS样式实现折行效果。
内容的提问来源于stack exchange,提问作者Marius
相关产品推荐
相关产品推荐

