中高级前端必须注意的 40 条移动端 H5 脱坑指南-HTML篇

以下文章来源于IQ前端 ,作者JowayYoung
#####HTML方向

调用系统功能
      使用<a>能快速调用移动设备的电话/短信/邮件三大通讯功能,使用<input>能快速调用移动设备的的图库/文件。

      这些功能方便了页面与系统的交互,关键在于调用格式一定要准确,否则会被移动端浏览器忽略
      ```
      <!-- 拨打电话 -->
      <a href="tel:10086">拨打电话给10086小姐姐</a>

      <!-- 发送短信 -->
      <a href="sms:10086">发送短信给10086小姐姐</a>

      <!-- 发送邮件 -->
      <a href="mailto:young.joway@aliyun.com">发送邮件给JowayYoung</a>

      <!-- 选择照片或拍摄照片 -->
      <input type="file" accept="image/*">

      <!-- 选择视频或拍摄视频 -->
      <input type="file" accept="video/*">

      <!-- 多选文件 -->
      <input type="file" multiple>
      ```
忽略自动识别
      有些移动端浏览器会自动将数字字母符号识别为电话/邮箱并将其渲染成上述「调用系统功能」里的<a>。虽然很方便却有可能违背需求。
      ```
        <!-- 忽略自动识别电话 -->
        <meta name="format-detection" content="telephone=no">

        <!-- 忽略自动识别邮箱 -->
        <meta name="format-detection" content="email=no">

        <!-- 忽略自动识别电话和邮箱 -->
        <meta name="format-detection" content="telephone=no, email=no">
      ```
弹出数字键盘
      使用<input type="tel">弹起数字键盘会带上#和*,适合输入电话。推荐使用<input type="number" pattern="\d*">弹起数字键盘,适合输入验证码等纯数字格式。
      ```
      <!-- 纯数字带#和* -->
      <input type="tel">

       <!-- 纯数字 -->
      <input type="number" pattern="\d*">
      ```
唤醒原生应用
      通过location.href与原生应用建立通讯渠道,这种页面与客户端的通讯方式称为「URL Scheme」,其基本格式为scheme://[path][?query],笔者曾经发表过《H5与App的通讯方式》讲述URL Scheme的使用。
      -「scheme」:应用标识,表示应用在系统里的唯一标识
      -「path」:应用行为,表示应用某个页面或功能
      -「query」:应用参数,表示应用页面或应用功能所需的条件参数

URL Scheme一般由前端与客户端共同协商。唤醒原生应用的前提是必须在移动设备里安装了该应用,有些移动端浏览器即使安装了该应用也无法唤醒原生应用,因为它认为URL Scheme是一种潜在的危险行为而禁用它,像Safari和微信浏览器。还好微信浏览器可开启白名单让URL Scheme有效。

若在页面引用第三方原生应用的URL Schema,可通过抓包第三方原生应用获取其URL。
```

<a href="weixin://">打开微信</a>

      <!-- 打开支付宝 -->
      <a href="alipays://">打开支付宝</a>

      <!-- 打开支付宝的扫一扫 -->
      <a href="alipays://platformapi/startapp?saId=10000007">打开支付宝的扫一扫</a>

      <!-- 打开支付宝的蚂蚁森林 -->
      <a href="alipays://platformapi/startapp?appId=60000002">打开支付宝的蚂蚁森林</a>
      ```
禁止页面缩放
      在智能手机的普及下,很多网站都具备桌面端和移动端两种浏览版本,因此无需双击缩放查看页面。禁止页面缩放可保障移动端浏览器能无遗漏地展现页面所有布局。
      ```
      <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1">
      ```
禁止页面缓存
      「Cache-Control」指定请求和响应遵循的缓存机制,不想使用浏览器缓存就禁止呗!
      ```
      <meta http-equiv="Cache-Control" content="no-cache">
      ```
禁止字母大写
      有时在输入框里输入文本会默认开启首字母大写纠正,就是输入首字母小写会被自动纠正成大写,特么的烦。直接声明autocapitalize=off关闭首字母大写功能和autocorrect=off关闭纠正功能。
      ```
      <input autocapitalize="off" autocorrect="off">
      ```

针对Safari配置

      贴一些Safari较零散且少用的配置。
      ```
      <!-- 设置Safari全屏,在iOS7+无效 -->
      <meta name="apple-mobile-web-app-capable" content="yes">

      <!-- 改变Safari状态栏样式,可选default/black/black-translucent,需在上述全屏模式下才有效 -->
      <meta name="apple-mobile-web-app-status-bar-style" content="black">

      <!-- 添加页面启动占位图 -->
      <link rel="apple-touch-startup-image" href="pig.jpg" media="(device-width: 375px)">

    <!-- 保存网站到桌面时添加图标 -->
    <link rel="apple-touch-icon" sizes="76x76" href="pig.jpg">

    <!-- 保存网站到桌面时添加图标且清除默认光泽 -->
    <link rel="apple-touch-icon-precomposed" href="pig.jpg">
      ```
针对其他浏览器配置
      贴一些其他浏览器较零散且少用的配置,主要是常用的QQ浏览器、UC浏览器和360浏览器。从网易MTL的测试数据得知,新版的QQ浏览器和UC浏览器已不支持以下<meta>声明了。
      ```
      <!-- 强制QQ浏览器竖屏 -->
      <meta name="x5-orientation" content="portrait">

      <!-- 强制QQ浏览器全屏 -->
      <meta name="x5-fullscreen" content="true">

      <!-- 开启QQ浏览器应用模式 -->
      <meta name="x5-page-mode" content="app">

      <!-- 强制UC浏览器竖屏 -->
      <meta name="screen-orientation" content="portrait">

      <!-- 强制UC浏览器全屏 -->
      <meta name="full-screen" content="yes">

       <!-- 开启UC浏览器应用模式 -->
      <meta name="browsermode" content="application">

       <!-- 开启360浏览器极速模式 -->
      <meta name="renderer" content="webkit">
      ```
让:active有效,让:hover无效
      有些元素的:active可能会无效,而元素的:hover在点击后会一直处于点击状态,需点击其他位置才能解除点击状态。给<body>注册一个空的touchstart事件可将两种状态反转。
      ```
      <body ontouchstart></body>
      ```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容