react 挪动端 兼容性问题和一些小细节

react 挪动端 兼容性题目和一些小细节

  • 运用 ES6 的阅读器兼容性题目
  • react 对低版本的安卓webview 兼容性
  • iOS下 fixed与软键盘的题目
  • onClick 阻挠冒泡
  • meta关于挪动端的一些特别属性
  • 页面制止复制、选中文本

1.运用 ES6 的阅读器兼容性题目

 由于 Babel 默许只转换转种种 ES2015 语法,而不转换新的 API,比方 Promise,以及 Object.assign、Array.from 这些新要领,这时候我们须要供应一些 ployfill 来模仿出如许一个供应原生支撑功用的阅读器环境。
 重要有两种体式格局:babel-runtime 和 babel-polyfill。

A.babel-runtime
  1.babel-runtime 的作用是模仿 ES2015 环境,包括种种疏散的 polyfill 模块,我们能够在本身的模块里零丁引入,比方 promise:
![图片形貌][1]

  2.它们不会在全局环境增添未完成的要领,只是如许手动援用每一个 polyfill 会异常低效,我们能够借助 Runtime transform 插件来自动化处置惩罚这一切。
  起首运用 npm 装置
![图片形貌][2]

  3.然后在 webpack 配置文件的 babel-loader 增添选项:
![图片形貌][3]

B.babel-polyfill

 而 babel-polyfill 是针对全局环境的,引入它阅读器就好像具有了范例里定义的完全的特征,一旦引入,就会跑一个 babel-polyfill 实例。用法以下:
 1.装置 babel-polyfill
![图片形貌][4]

 2.在进口文件中援用:
![图片形貌][5]

实在做到这些,在大部分阅读器就可以够一般跑了,

2.react 对低版本的安卓webview 兼容性

A.android较低版本webview不支撑Object.assign改用var objectAssign = require('object-assign’)  这类状况上面计划能够处理
B.import React from 'react';import ReactDOM from 'react-dom';//不可放在其他模块引入的背面,不然android5.0及以下版本webview报错

3.iOS下 fixed与软键盘的题目

 fixed失效是由于软键盘唤起后,页面的 fixed 元素将失效(ios以为用户更愿望的是元素跟着转动而挪动,也就是变成了 absolute 定位),
 既然变成了absolute,所以当页面凌驾一屏且转动时,失效的 fixed 元素就会追随转动了。处理计划就是让全部页面处于一屏高度就可以处理题目的基础
 <body> 
    <div class='warper'> 
        <div class='top'></div> 
        <div class='main'></div> 
    <div> 
    <div class="fix-bottom">
    </div> 
</body>

款式:
warper{ 
    position: absolute; 
    width: 100%; 
    left: 0; 
    right: 0; 
    top: 0; 
    bottom: 0; 
    overflow-y: scroll; 
    -webkit-overflow-scrolling: touch;/* 处理ios滑动不流通题目 */ }
.fix-bottom{
    position:fixed;
    bottom:0;
    width: 100%;
}


4.onClick 阻挠冒泡
阻挠冒泡事宜分三种状况

A、阻挠合成事宜间的冒泡,用e.stopPropagation();
![图片形貌][6]
B、阻挠原生事宜与最外层document上的事宜间的冒泡,用e.nativeEvent.stopImmediatePropagation();
![图片形貌][7]
C、阻挠合成事宜与除最外层document上的原生事宜上的冒泡,经由过程推断e.target来防止
![图片形貌][8]

5.meta关于挪动端的一些特别属性

<!--重要I是强迫让文档的宽度与装备宽度坚持1:1,最大宽度1.0,制止屏幕缩放。-->
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<!--这个也是iphone私有标签,许可全屏阅读。-->
<meta content="yes" name="apple-mobile-web-app-capable">
<!--iphone的私有标签,iphone顶端状况条的款式。-->
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<!--制止数字自动识别为电话号码,这个比较有效,由于一串数字在iphone上会显现成蓝色,款式加成别的色彩也是不见效的。-->
<meta content="telephone=no" name="format-detection">

6.页面制止复制、选中文本

-webkit-user-select: none;
 -moz-user-select: none;
 -khtml-user-select: none;
  user-select: none;
    原文作者:肖天翼
    原文地址: https://segmentfault.com/a/1190000017085309
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞