前端小笔记

1.react 中,让字符串已HTML形式加载显示

dangerouslySetInnerHTML={{ __html: option[optionFix] }}

例如:

let  var ='<label style='color:red'>加载数据</label>';
render() {
return (
      <div
        dangerouslySetInnerHTML={{ __html: option[optionFix] }} />
    )
}

  2.默认事件以前的滑动穿透

兼容ios写法:

1. passive:false   参数不写明 。在某些浏览器的默认参数不一样,导致穿透无法解决

     document.body.addEventListener('touchmove', function (e) {
          e.preventDefault(); //阻止默认的处理方式(阻止下拉滑动的效果)
        }, {passive: false});

2.添加样式解决

<body style="touch-action:none;"></body>

3.真机调试H5

<script src="https://cdn.bootcss.com/vConsole/3.3.0/vconsole.min.js"></script>

<script type="text/javascript">
  var vConsole = new VConsole();
</script>

4.截屏示例   html2canvas

npm install html2canvas --save

import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import QRCodes from 'qrcode.react';
import cssModules from 'react-css-modules';
import styles from '../myQRC/qrc.scss';
import html2canvas from 'html2canvas';
import $ from 'jquery';

const urlParam = getUrlParam();
export const SCREEN_W = document.documentElement.clientWidth;
const backImg = require('../../images/qrc_bg.png');
@cssModules(styles, { allowMultiple: true, errorWhenNotFound: false })
class Qrc extends Component {
  static propTypes = {
    appState: PropTypes.object,
    dispatch: PropTypes.func,
  };

  constructor(props) {
    super(props);
    const { sessionId } = urlParam;
    let requestSrc = 'ios';
    if (userAgentInfo.isApp()) {
      if (userAgentInfo.isIOS()) requestSrc = 'ios';
      if (userAgentInfo.isAndroid()) requestSrc = 'android';
    }
    this.state = {
      isShow: false,
      qrc: '',
      userId: '',
      imgShow: false,
      imgPath: '',
    };
    /*  ${window.NORMAL_SERVER}/user/myQrc.jpg?sessionId=${sessionId}&requestSrc=${requestSrc}&v=${Date.now()}*/
  }

  componentDidMount() {
    this.props.dispatch(toGetOpenStatus(urlParam))
      .then((rs) => {
        console.log(`rs = ${JSON.stringify(rs)}`);
        if (rs && rs.userId) {
          this.setState({
            qrc: `${TOMCAT_PRE_QRC_ADDRESS}?invUserId=${rs.userId}#signRegist`,
            userId: rs.userId,
          }, () => {
            this.setState({
              isShow: true,
            });
          });
        }
      });
    // 延时生成图片
    const that = this;
    setTimeout(() => {
      html2canvas($('#myQrcDiv')[0])
        .then((canvas) => {
          const src = canvas.toDataURL('image/jpeg');
          that.setState({
            imgShow: true,
            imgPath: src,
          });
        });
    }, 1000);
  }

  render() {
    return !this.state.isShow ? '' : (<div style={{ height: '100%' }}>
      <div
        id="myQrcDiv"
        styleName="qcrContent"
        style={{ backgroundImage: `url(${backImg})`, display: !this.state.imgShow ? 'block' : 'none' }}
      >
        <div styleName="qrcBox">
          <div styleName="title">您的专属邀请码为</div>
          <div styleName="qrcNumber">{this.state.userId}</div>
          <div styleName="qrcDesc">好友也可以在注册时直接填写邀请码</div>
          <div styleName="splitLine" />
          <QRCodes
            value={this.state.qrc}
            size={SCREEN_W * 0.50}
          />
          <div styleName="desc">邀请好友扫描二维码</div>
        </div>

      </div>
      <img src={this.state.imgPath} style={{ display: this.state.imgShow ? 'block' : 'none', width: '100%' }} />
    </div>
    );
  }
}

5.页面第一次加载,或刷新时,页面闪烁

5.1  Vue中可写几种都能防止

     

<style>
    [v-cloak] {
        display: none;
    }
</style>


<span v-bind="xx"></span>

<span v-cloak>{{xx}}</span>

<span v-html="xx"></span>

5.2 普通可以先隐藏页面,加载完成在显示

<body id="bodyV" style="display: none"></body>
  window.onload = function () {
    document.getElementById('bodyV').style.display = 'block';
  }

6.手机打开相机、相册设置

<!-- 打开选择相机或相册  -->

<input type="file" accept="image/*" />

<!-- android手机且使用QQ浏览器  -->

<input type="file" accept="image/*" capture="camera" />

//正常情况下,上面那句大多数手机是直接打开相机,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值