1. 检测是否是一个函数
const isFunction = (obj) => {
return typeof obj === 'function' && obj.nodeType !== 'number'
}
// 或者
const isFunction = (fn) => {
return Object.prototype.toString.call(fn) === '[object Function]'
}
2. 复制文本
const copyText = (text) => {
// clipboardData 在页面上将需要的东西复制到剪贴板上
const clipboardData = window.clipboardData
if (clipboardData) {
clipboardData.clearData()
clipboardData.setData('Text', text)
return true
} else if (document.execCommand) {
// 注意 document.execCommand 已弃用 但是有些浏览器依旧支持 用的时候记得看兼容情况
// 通过创建 dom 元素,去把要复制的内容拿到
const el = document.createElement('textarea')
el.value = text
el.setAttribute('readonly', '')
el.style.position = 'absolute'
el.style.left = '-9999px'
document.body.appendChild(el)
el.select()
// 拷贝当前内容到剪贴板
document.execCommand('copy')
// 删除 el 节点
document.body.removeChild(el)
return true
}
return false
}
copyText('hello!') // ctrl + v = copyText | true
3. 回到顶部
const bindTop = () => {
// 方法一: 这样可以实现,但是效果不太行
window.scrollTo(0, 0)
document.documentElement.scrollTop = 0
// 方法二: 通过计时器去滚动 视觉上会丝滑一些,没有太大的卡顿效果
const timeTop = setInterval(() => {
// 去控制他的滑行距离
document.documentElement.scrollTop = scrollTopH.value -= 50
// 当滑到顶部的时候记得清除计时器(*) 重点
if (scrollTopH.value <= 0) {
clearInterval(timeTop)
}
}, 10)
}
4. 常用的正则判断
// 校验手机号
const validatePhoneNum = (mobile) => {
const reg = /^1[3, 4, 5, 6, 7, 8, 9]\d{9}$/
return reg.test(mobile)
}