首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端开发必备:7个高效JavaScript工具函数及实现原理

日常开发中,我们经常会用到很多通用的 JS 代码,例如 复制内容、从 URL 中获取指定参数 等,这些代码基本都可以封装成公共函数,用于不同的地方调用。

为了方便大家日常开发,防止忘记具体的代码实现,今天我们就来看看这七种常用代码片段

一:将内容复制到剪贴板

原理是模拟鼠标点击【input】,执行复制【input】中的内容,这种方式,兼容性极差。在开发APP嵌套网页时就发现APP端可能会禁用此类行为,导致复制失败。个人测试过发现IOS端基本不行,完整代码如下:

input框也可以用textarea来代替

//参数为文本内容function copy_content(text){   //创建一个输入框   var transfer = document.createElement('input');   // 防止页面出现闪动的现象将输入框高度设置为0   transfer.style.height = 0;   //将输入框插入到页面的一个div元素中   document.body.appendChild(transfer)   //给输入框复制   transfer.value = text;   //让输入框获得焦点   transfer.focus();   transfer.contentEditable = true;   //设置输入框为只读状态   transfer.readOnly = false;   //模拟点击复制   if(transfer.setSelectionRange) {       transfer.setSelectionRange(0,transfer.value.length);       var range = document.createRange();       range.selectNodeContents(transfer);   }else{       transfer.select();   }   document.execCommand('copy',false,null);   //让输入框失去焦点   transfer.blur();   //删除输入框元素   transfer.remove()   console.log('复制成功')}

二:解析URL获取参数

在js中获取url参数的方式有很多,在之前的文章【解析url获取相关信息】中使用new URL对象解析url,今天我们结合new URLSearchParams对象来解析url并获取指定参数内容,具体代码如下:

function getQueryByName(url,name) {   //解析url获取参数部分内容   let urlObj = new URL(url)   //解析参数部分内容   let query = new URLSearchParams(url.search)   //获取某个参数的内容并decode解码   return decodeURIComponent(query.get(name));}

三:平滑滚动至页面顶部

function scrollToTop() {   const c = document.documentElement.scrollTop || document.body.scrollTop

  if (c > 0) {       window.requestAnimationFrame(scrollToTop)       window.scrollTo(0, c - c / 8)   }}

四:获取当前页面滚动距离

function getScrollPosition(el = window) {   return {       x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,       y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop,   }}

五:判断当前设备是Andoird还是iOS

在这里我们使用userAgent来判断当前设备是安卓还是IOS

function getOSType() {   let u = navigator.userAgent;   let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1;   let isIOS = !!u.match(/\(i[^]+( U)? CPU.+Mac OS X/);

  if (isIOS) {       return 0   }   if (isAndroid) {       return 1   }   return 2}

六:格式化货币

格式化货币是将一个金额转换成具有逗号表现的格式。例如:123456789 转换后:123,456,789

function formatMoney(money){   return money.toLocaleString()}

七:进入和退出全屏

7.1 进入全屏

function fullScreen() {   let el = document.documentElement   let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen   //typeof rfs != "undefined" && rfs   if (rfs) {       rfs.call(el)   } else if (typeof window.ActiveXObject !== "undefined") {       let wscript = new ActiveXObject("WScript.Shell")       if (wscript != null) {       wscript.SendKeys("{F11}")       }   }}

7.2 推出全屏

function exitScreen() {   let el = document   let cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el.exitFullScreen   //typeof cfs != "undefined" && cfs   if (cfs) {       cfs.call(el)   } else if (typeof window.ActiveXObject !== "undefined") {       let wscript = new ActiveXObject("WScript.Shell")       if (wscript != null) {       wscript.SendKeys("{F11}")       }   }}

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OQpJ0o0qw8fj9sndHvqZoz5Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券