博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端小知识10点(2019.5.28)
阅读量:6263 次
发布时间:2019-06-22

本文共 2206 字,大约阅读时间需要 7 分钟。

1、火狐(firefox)的mouseenter问题

 {
          this.mouseEnter(e,);        }}        onBlur={() => {}}        onMouseLeave={e => {
          this.mouseOut(e,);        }} /> 复制代码

onMouseEnter事件在火狐上会不断地触发mouseentermouseleave事件,所以需要先设置一个flag=false,在onMouseEnter时设为true,在onMouseLeave设为false,让不断触发的onMouseEnter事件只触发一次即可

this.state={
  flag:false } mouseEnter(){
  if(!this.state.flag){
    //...do something     this.setState({
      flag:true,     })   } } mouseOut(){
  this.setState({
    flag:false,   }) } 复制代码

2、ESLint Unary operator '++' used

i++是不安全的,所以用i+=1

//bad for(let i=0;i

3、兼容 ie11之 SVG 的transform旋转

从 0 度

//非IE可以这样写 svg.style('transform', `rotate(0deg)`) //IE需要这么写 svg.attr('transform',`rotate(0,0 0)`) 复制代码

转到 180 度

//非IE可以这样写 svg.style('transform', `rotate(180)`) //IE需要这么写 svg.attr('transform',  `rotate(180,0 0)`) 复制代码

详情请参考:

4、border-block-end

边界块结束

border-block-end: 1px solid #d5d5d5; 复制代码

第一次知道这个属性,好像是新边框属性,但兼容性不太好,IE11 不兼容,所以还得改回下面这样:

border-bottom: 1px solid #d5d5d5; 复制代码

5、调整 svg 中<g>标签的位置

使用<g>标签自带的transform属性

复制代码

6、get请求中的参数有中文,ie11无法识别

使用encodeURI()方法来识别,也不影响其他浏览器

  encodeURI(         url     ) 复制代码

7、document.activeElement.tagName

返回文档中当前获得焦点的元素

console.log(document.activeElement.tagName) 复制代码

(这个我以前记过,但发现工作中很少用到)

8、注意写法,在赋值的同时,判断条件

 let a  let b=1  if ( ( a = b )!==2 ) {
   console.log(a,'a28') //1  } 复制代码

9、 网上常能见到的一段 JS 随机数生成算法如下,为什么用 9301, 49297, 233280 这三个数字做基数?

function rnd( seed ){
    seed = ( seed * 9301 + 49297 ) % 233280; //为何使用这三个数?     return seed / ( 233280.0 ); }; function rand(number){
    today = new Date();      seed = today.getTime();     return Math.ceil( rnd( seed ) * number ); }; myNum=(rand(5));  复制代码

简单说,是3点原因:

(1)c与m互质

(2)a - 1可以被m的所有质因数整除
(3)如果m是4的倍数,a - 1也必须是4的倍数
以上三条被称为Hull-Dobell定理。
可以看到,a=9301, c = 49297, m = 233280这组参数,以上三条全部满足。

详情请参考:

10、浏览器类别判断 window.navigator.userAgent

console.log(window.navigator.userAgent,'userAgent67') 复制代码

360安全浏览器:

 const is360=window.navigator.userAgent.indexOf("WOW64")!==-1 复制代码

Edge:

const isEdge = window.navigator.userAgent.indexOf('Edge') !== -1; 复制代码

IE11:

const isMs = window.navigator.userAgent.indexOf('.NET') !== -1; 复制代码

(完)

转载地址:http://tdupa.baihongyu.com/

你可能感兴趣的文章
URAL 2048 Histroy(打表+模拟)
查看>>
深入理解String, StringBuffer, StringBuilder的区别(基于JDK1.8)
查看>>
【转】oracle in与exists语句的区别
查看>>
RPC 使用中的一些注意点
查看>>
Django_rest framework 框架介绍
查看>>
Hello world,Hello 2014,Bye 2013
查看>>
python之正则表达式模块
查看>>
BFC和清除浮动
查看>>
笔记:2016-06-04
查看>>
ECSHOP 布局参考图
查看>>
Entity Framework 延伸系列目录
查看>>
Java 代码安全(一) —— 避免用String储存敏感数据
查看>>
制作一个最小Linux系统
查看>>
3个著名加密算法(MD5、RSA、DES)的解析
查看>>
BBS(仿博客园系统)项目05(后台管理功能实现:文章添加、富文本编辑器使用、xss攻击、BeautifulSoup4模块、富文本编辑器上传图片、修改头像)...
查看>>
图说机房空气焓湿处理过程
查看>>
django-auth认证模块
查看>>
check build status
查看>>
int类型究竟占几个字节
查看>>
13.使用toggle()方法绑定多个函数
查看>>