日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

html文本框监听粘贴,JavaScript实现复制粘贴

發(fā)布時間:2024/1/1 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html文本框监听粘贴,JavaScript实现复制粘贴 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有個很常見的生活場景是:我們在網(wǎng)頁上閱讀一篇文章,移動鼠標(biāo),框選一段文字,這個時候文字有了藍(lán)色背景,點鼠標(biāo)右鍵,選擇復(fù)制,就可以把選中的文字復(fù)制到剪貼板中。 其實這一小小的行為在 JavaScript 中涉及到如下一些術(shù)語:

相關(guān)術(shù)語

錨點(anchor)

錨點指的是一個選區(qū)的起始點,這里的錨點不同于HTML中的錨點鏈接。當(dāng)我們使用鼠標(biāo)框選一個區(qū)域的時候,錨點就是我們鼠標(biāo)按下瞬間的那個點。在用戶拖動鼠標(biāo)時,錨點是不會變的。

焦點(focus)

選區(qū)的焦點是該選區(qū)的終點,當(dāng)您用鼠標(biāo)框選一個選區(qū)的時候,焦點是你的鼠標(biāo)松開瞬間所記錄的那個點。隨著用戶拖動鼠標(biāo),焦點的位置會隨著改變。

范圍(range)

范圍俗稱拖藍(lán),用來表示用戶選中的文本區(qū)域,即從錨點到焦點的這一段文本區(qū)域。

HTMLInputElement 的三種方法

選中文本域中的內(nèi)容

HTMLInputElement.select()

英文解釋為:Selects the input text in the element, and focuses it so the user can subsequently replace the whole entry.

剛認(rèn)識這個方法的時候,下意識的覺得應(yīng)該會返回選中的文字才對,然而并沒有,這個方法沒有返回值,僅僅只是選中了文字而已。

在文本域上設(shè)置焦點

HTMLInputElement.focus()

英文解釋為:Focus on input; keystrokes will subsequently go to this element.

從文本域上移開焦點

HTMLInputElement.blur()

英文解釋為:Removes focus from input; keystrokes will subsequently go nowhere.

值得注意的是以上三種方法都只面向 和 結(jié)點,并且都沒有返回值。

document.execCommand

文檔對象的 execCommand方法允許運行命令來操縱可編輯區(qū)域的內(nèi)容,具體可以查看這里. 下面僅介紹 copy 這個方法:

bool = document.execCommand(copy)

這個方法指拷貝當(dāng)前選中內(nèi)容到剪貼板,返回值為一個 bool 值, 如果返回值為 false 則表示操作不被支持或未被啟用。

很遺憾的是這個方法的瀏覽器兼容性一般,IE 僅支持 8 以上的版本。

通過以上幾個方法我們已經(jīng)可以實現(xiàn)簡單的復(fù)制粘貼功能了:

copy

$('.bt-copy').click(function(){

var copyTarget = $('.box-text');

copyTarget.select();

try {

document.execCommand('copy');

}

catch (err) {

alert('請使用CTRL+C,CTRL+V來復(fù)制粘貼~');

}

copyTarget.blur();

})

短短幾行代碼就實現(xiàn)了復(fù)制粘貼的功能,但仍然有改進(jìn)的地方:

增加除 和 外的結(jié)點的支持,可以借鑒 select.js 的實現(xiàn)方法。

對不支持 document.execCommand('copy') 的瀏覽器使用 ZeroClipboard 作為 fallback。

---------------------------------------- 2017/5/5日 更 ----------------------------------------

之前說過, .select() 方法僅支持 和 元素,發(fā)現(xiàn)一個更好的辦法用于解決這個問題:

用 js 生成一個隱藏的 元素,追加到 dom 里面。

把需要復(fù)制的文本賦值給剛生成的 元素。

使用原生的方法進(jìn)行選中和復(fù)制的操作。

最后記得在DOM中移除 元素。

var textArea = document.createElement('textarea');

textArea.style.position = 'fixed';

textArea.style.left = '-10000px';

textArea.style.top = '-10000px';

document.body.appendChild(textArea);

textArea.value = this.copyText;

textArea.select();

document.execCommand('copy');

document.body.removeChild(textArea);

總結(jié)

以上是生活随笔為你收集整理的html文本框监听粘贴,JavaScript实现复制粘贴的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。