JavaScript常用工具函数汇总(浏览器环境)
前端业务中比较常用的JavaScript工具函数,浏览器环境常用,可直接拷贝在项目里使用。这里统一整理,方便查阅,本文章会持续更新。
一、file转为base64
/**
*file转为base64
*@param{*}filefile对象
*@param{*}callback
*/
exportconstfileToDataURL=(file,callback)=>{
letfreader=newFileReader();
freader.readAsDataURL(file);
freader.onload=function(e){callback(e.target.result);}
}
二、blob流转换为base64
/**
*blob流转换为base64
*@param{*}blobblob对象
*@param{*}callback
*/
exportconstblobToDataURL=(blob,callback)=>{
letfreader=newFileReader();
freader.readAsDataURL(blob);
freader.onload=function(e){callback(e.target.result);}
}
三、base64转换为blob
/**
*base64转换为blob
*@param{*}dataurlbase64
*/
exportconstdataURLtoBlob=(dataurl)=>{
letarr=dataurl.split(','),
mime=arr[0].match(/:(.*?);/)[1],
bstr=atob(arr[1]),
n=bstr.length,
u8arr=newUint8Array(n);
while(n--){
u8arr[n]=bstr.charCodeAt(n);
}
returnnewBlob([u8arr],{type:mime});
}
四、base64转换为file,IE低版本不兼容
/**
*将base64转换为file,IE低版本不兼容
*@param{*}dataurlbase64
*@param{*}filename文件名
*/
exportconstdataURLtoFile=(dataurl,filename)=>{
letarr=dataurl.split(','),
mime=arr[0].match(/:(.*?);/)[1],
bstr=atob(arr[1]),
n=bstr.length,
u8arr=newUint8Array(n);
while(n--){
u8arr[n]=bstr.charCodeAt(n);
}
returnnewFile([u8arr],filename,{type:mime});
}
五、图片url转化成base64
/**
*图片url转化成base64
*@param{*}url图片url
*@param{*}callback
*@param{*}outputFormat图片格式
*/
exportconstimgUrlToDataURL=(url,callback,outputFormat)=>{
letcanvas=document.createElement('canvas'),
ctx=canvas.getContext('2d'),
img=newImage;
img.crossOrigin='Anonymous';
img.src=url+"?timeStamp="+newDate().getTime();
img.onload=function(){
canvas.height=img.height;
canvas.width=img.width;
//ctx.drawImage(img,0,0);
ctx.drawImage(this,0,0,img.width,img.height);
letdataURL=canvas.toDataURL(outputFormat||'image/png');
//callback.call(this,dataURL);
callback&&callback(dataURL)
canvas=null;
};
}
六、获取窗口尺寸
exportfunctiongetViewportSize(){
letw=0;
leth=0;
if(window.innerWidth){
w=window.innerWidth
h=window.innerHeight
}elseif(document.body&&document.body.clientWidth){
w=document.body.clientWidth
h=document.body.clientHeight
}elseif(document.documentElement&&document.documentElement.clientWidth){
w=document.documentElement.clientWidth
h=document.documentElement.clientHeight
}
return{w,h}
}
七、浏览器环境检测
constua=window.navigator.userAgent.toLowerCase()
//是否微信
exportconstisWx=()=>ua.match(/MicroMessenger/i)=='micromessenger'
//是否ipad
exportconstisIpad=()=>ua.indexOf('ipad')>-1
//是否iphone
exportconstisIphone=()=>ua.indexOf('iphoneos')>-1
//是否uc
exportconstisUc=()=>ua.indexOf('ucweb')>-1
//是否windowspc
exportconstisWindows=()=>ua.indexOf('windows')>-1
//是否android
exportconstisAndroid=()=>ua.indexOf('android')>-1||ua.indexOf('adr')>-1
//是否ios
exportconstisIos=()=>/(iphone|ipod|ipad|ios)/i.test(ua)
//是否qq浏览器
exportconstisQq=()=>ua.indexOf('mqqbrowser')>-1&&ua.indexOf('qq')<0
//是否qq内置浏览器
exportconstisQQInstalled=()=>ua.indexOf('qq')>-1&&ua.indexOf('mqqbrowser')<0
八、开启与关闭全屏
//开启全屏
exportfunctionlaunchFullscreen(element){
element=element||document.documentElement
if(element.requestFullscreen){
element.requestFullscreen()
}elseif(element.mozRequestFullScreen){
element.mozRequestFullScreen()
}elseif(element.msRequestFullscreen){
element.msRequestFullscreen()
}elseif(element.webkitRequestFullscreen){
element.webkitRequestFullScreen()
}
}
//关闭全屏
exportfunctionexitFullscreen(){
if(document.exitFullscreen){
document.exitFullscreen()
}elseif(document.msExitFullscreen){
document.msExitFullscreen()
}elseif(document.mozCancelFullScreen){
document.mozCancelFullScreen()
}elseif(document.webkitExitFullscreen){
document.webkitExitFullscreen()
}
}
九、返回顶部/指定位置,实现滚动动画
/**
*@param{*}number距离页面顶部的距离
*@param{*}time滚动所需时间单位ms
*/
constscrolling=(number=0,time)=>{
if(!time){
document.body.scrollTop=document.documentElement.scrollTop=number;
returnnumber;
}
//设置循环的间隔时间值越小消耗性能越高
constspacingTime=20;
//计算循环的次数
letspacingInex=time/spacingTime;
//获取当前滚动条位置
letnowTop=document.body.scrollTop+document.documentElement.scrollTop;
//计算每次滑动的距离
leteverTop=(number-nowTop)/spacingInex;
letscrollTimer=setInterval(()=>{
if(spacingInex>0){
spacingInex--;
ScrollTop(nowTop+=everTop);
}else{
clearInterval(scrollTimer);//清除计时器
}
},spacingTime);
};
//滚动到距离页面顶部500px的位置动画时间为300ms
//scrolling(500,300);
十、实现锚点滚动
//运用了H5的scrollIntoView方法,这是一个实验中的功能,IE8以下、Safari6以下、SafarioniOS5以下不兼容
constscrollToAnchor=(anchorName)=>{
if(anchorName){
//找到锚点
letanchorElement=document.getElementById(anchorName);
//如果对应id的锚点存在,就跳转到锚点
if(anchorElement){
anchorElement.scrollIntoView({
behavior:'auto',//定义动画过渡效果,"auto"或"smooth"之一。默认为"auto"
block:'start',//定义垂直方向的对齐,"start","center","end",或"nearest"之一。默认为"start"
inline:'nearest',//定义水平方向的对齐,"start","center","end",或"nearest"之一。默认为"nearest"
});
}
}
}
以上就是JavaScript常用工具函数汇总(浏览器环境)的详细内容,更多关于JavaScript工具函数的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。