<h1>1、直接传入字符串</h1>
<button onclick="copy({value: '我有一只小毛驴,我从来都不骑!'})">复制</button>
<h1>2、传入输入框DOM</h1>
<button onclick="copy({input: document.getElementById('myInput')})">复制输入框的内容</button>
<input id="myInput" value="这是一段文本内容,你可以编辑修改后再复制一下试试。" type="text" />
<button onclick="copy({input: document.getElementById('myTextarea')})">复制输入框的内容</button>
<textarea id="myTextarea">这是一段文本内容,你可以编辑修改后再复制一下试试。</textarea>
<script>
/**
* 复制内容到剪贴板
* @param {String} value 要复制的内容
* @param {Object} input 输入框的DOM节点。如果没有传入的话则新建一个Dom并在复制后销毁。如果传入则将复制该输入框内的文本,value参数失效。
* @example
* copy({value: '我有一只小毛驴,我从来都不骑!'})
* copy({input: document.getElementById('myInput')})
*/
function copy(options) {
let value = options.value || ''
let input = options.input || null
if ((!value || typeof value !== 'string') && !input) { // 传参校验
alert('传参错误')
return false
}
const isNewInput = !input
if (!input) {
input = document.createElement('textarea') // 直接构建input
input.value = value // 设置内容
document.body.appendChild(input) // 添加临时实例
}
input.select() // 选择实例内容
value = input.value
const isbool = document.execCommand('Copy') // 执行复制
if (isbool) {
alert('复制成功:' + value.substring(0, 20) + (value.length > 20 ? '...' : ''))
} else {
alert('复制失败')
}
if (isNewInput) document.body.removeChild(input) // 删除临时实例
}
</script>
微信号:gaogaojie5添加微信好友, 获取更多信息
复制微信号
转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!


