明天在做一个拷贝函数, 要在 document.execCommand('copy')
的中央加异样解决。平时的习惯上面这样写,在失去后果后先移除 input 而后 return
function copyText(text) { const inputElement = document.createElement('textarea'); Object.assign(inputElement.style, { opacity: 0, position: 'fixed', top: 0 }); document.body.appendChild(inputElement); inputElement.readOnly = true; inputElement.value = text; inputElement.select(); inputElement.setSelectionRange(0, text.length); let result=false; try { result = document.execCommand('copy') } catch (err) {} document.body.removeChild(inputElement) return result}
突发奇想,试下 finally
中来移除 input 。各位然而 finally
这个在 return 之后会不会执行啊。试了下竟然会,并且 finally
中的代码先于 return 自身执行,返回值也正确。
try { return document.execCommand('copy')} catch (err) { return false} finally { document.body.removeChild(inputElement)}
执行程序验证代码
function test() { try { return console.log(1), 3; } finally { console.log(2) }}console.log(test())
输入:1,2,3
return 左边先执行,而后 finally
, 最初 return 。感觉像找到一种在 return 前面还能执行代码的形式