一、火狐(firefox)的mouseenter
问题javascript
<MyIcon
onMouseEnter={e => {
this.mouseEnter(e,);
}}
onBlur={() => {}}
onMouseLeave={e => {
this.mouseOut(e,);
}}
/>
复制代码
onMouseEnter
事件在火狐上会不断地触发mouseenter
和mouseleave
事件,因此须要先设置一个flag=false
,在onMouseEnter
时设为true
,在onMouseLeave
设为false
,让不断触发的onMouseEnter
事件只触发一次便可css
this.state={
flag:false
}
mouseEnter(){
if(!this.state.flag){
//...do something
this.setState({
flag:true,
})
}
}
mouseOut(){
this.setState({
flag:false,
})
}
复制代码
二、ESLint Unary operator '++' usedi++
是不安全的,因此用i+=1
java
//bad
for(let i=0;i<a.length;i++)
//good
for(let i=0;i<a.length;i+=1)
复制代码
三、兼容 ie11之 SVG 的transform
旋转
从 0 度算法
//非IE能够这样写
svg.style('transform', `rotate(0deg)`)
//IE须要这么写
svg.attr('transform',`rotate(0,0 0)`)
复制代码
转到 180 度sql
//非IE能够这样写
svg.style('transform', `rotate(180)`)
//IE须要这么写
svg.attr('transform', `rotate(180,0 0)`)
复制代码
详情请参考:www.zhangxinxu.com/wordpress/2…浏览器
四、border-block-end
边界块结束安全
border-block-end: 1px solid #d5d5d5;
复制代码
第一次知道这个属性,好像是新边框属性,但兼容性不太好,IE11 不兼容,因此还得改回下面这样:bash
border-bottom: 1px solid #d5d5d5;
复制代码
五、调整 svg 中<g>
标签的位置
使用<g>
标签自带的transform
属性app
<g transform={'translate(0 30) scale(1.4)'}>
</g>
复制代码
六、get
请求中的参数有中文,ie11
没法识别
使用encodeURI()
方法来识别,也不影响其余浏览器svg
encodeURI(
url
)
复制代码
七、document.activeElement.tagName
返回文档中当前得到焦点的元素
console.log(document.activeElement.tagName)
复制代码
(这个我之前记过,但发现工做中不多用到)
八、注意写法,在赋值的同时,判断条件
let a
let b=1
if ( ( a = b )!==2 ) {
console.log(a,'a28') //1
}
复制代码
九、 网上常能见到的一段 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这组参数,以上三条所有知足。
详情请参考:www.zhihu.com/question/22…
十、浏览器类别判断 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;
复制代码
(完)