前端常见兼容问题系列5:¥符号在部分Android APP的WebView中不见了

简介: 在一些安卓机型中,¥符号在某些Android APP的WebView中显示不正确,会受到页面元素lang属性设置的影响。

问题再现

¥符号在涉及到售卖的页面再常见不过了。但是,测试中居然发现,华为荣耀6 plus(系统4.4.2)上,某APP中该符号不见了,所有用到该符号的地方均成了空白(如图1所示)。

screenshot.png
(图1)

而实际上,我所期望的效果如图2所示:
screenshot.png
(图2)

分析过程

莫非是编码不对?首先,来看一下我是怎么实现¥这个符号的——用的是CSS,形如

.price:before{
        content:'\A5';
        display:block;
        font-size:12px;
}

的伪元素。

发现这个问题之后,我尝试把它直接写在html中,或者&yen; &#165; &#xa5; &#165; &#xA5; 等都试验了一番,全部都不能显示。网络检索到有人说把它改成全角的¥,即(FFE5),还是不行。然道说我碰到“天坑”了。但这时,我就相信一条:有bug必有原因!于是又复查了一遍源代码,发现<html>标签上设置了lang="zh-cmn-Hans" ,我试着把它改成了lang="en" ,问题居然就这么解决了。

但是,字符虽然出来了,显示出来的却始终是Ұ的形状,而非¥,即少了一横。我突然想起来刚才反复试验的时候把content:'\A5';改成了content:'\FFE5';,于是恢复了一下,才最终大功告成。

不过,因为原有的页面是在<html>标签上设置了lang="zh-cmn-Hans" ,如果我们需要在保留它的前提下怎么解决这个bug呢?

结论

影响面比较小的办法是:可以只针对使用了半角的¥的容器标签添加lang="en"属性,如<span class="price" lang="en">&#165;</span>

另外,有网友介绍华为P7 ,小米3也都存在该问题,看来不只是个例。考虑到其对视觉展现和语义表达的影响非常明显,因而值得特别留意重视。

目录
相关文章
|
3月前
Android.mk(makefile)中几个符号的区别:=、 :=、 ?=、 +=
本文解释了在Android.mk文件中使用的几种赋值符号的区别,包括`=`(基本赋值)、`:=`(覆盖赋值)、`?=`(条件赋值,仅在变量未赋值时操作)、`+=`(追加赋值),并通过实验演示了这些符号的具体行为和效果。
189 1
|
26天前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
32 2
|
1月前
|
前端开发 JavaScript 安全
前端JS实现密码校验键盘横竖、26字母、相同字母、相同数字、密码包含用户名、数字 字母不能连续 不能相同三个、不能横向 竖向 连续三个 包含字符、不能有中文符号
该 JavaScript 代码实现了一个严格的密码校验功能,确保密码满足多种安全要求,包括长度、字符类型、不包含中文及特殊字符、不与用户名相似等。通过多个辅助函数,如 `validateFormat` 检查密码格式,`isHasChinaCharFun` 检测中文符号,`getCharAll` 生成键盘组合,以及 `checkPasswordFun` 综合验证密码的有效性和安全性。此工具对于提高用户账户的安全性非常有用。
33 0
|
3月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
|
3月前
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
|
3月前
|
JavaScript 前端开发 安全
VUE——APP,后端,前端三端AES加密解密
VUE——APP,后端,前端三端AES加密解密
165 0
|
5月前
|
开发框架 小程序 前端开发
uni-app前端应用开发框架
uni-app对做移动端开发的来说应该无人不知、无人不晓了吧?!从名字就能看出来这个框架要干啥,unify app——没错,就是统一前端应用开发,不管你是小程序、app、还是H5、公众号,用这个框架都能做。uni-app让开发者编写一套代码,就可以编译为安卓app、ios app、微信小程序、抖音小程序、支付宝小程序等十几个平台,而且马上支持纯血鸿蒙了,这简直是个人、开发工作室、小型开发公司的福音,开发一些常规的app、小程序,用这个框架足够了。
70 7
|
5月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
5月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
5月前
|
前端开发 小程序
新版校园跑腿外卖独立版+APP+小程序前端外卖配送平台源码
同城校园跑腿外卖配送平台源码,支持自定义diy 你可以设计你的页面,设计你自己的风格,支持多校园,独立版本,多商户,有用户端,骑手端,商家端,强大的功能
189 3
下一篇
无影云桌面