欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

20行JS代碼實(shí)現(xiàn)粘貼板復(fù)制功能

 更新時(shí)間:2018年02月06日 11:25:42   投稿:mrr  
本文給大家分析20行JS代碼實(shí)現(xiàn)粘貼板功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

使用剪貼板是一項(xiàng)基本技能。作為碼農(nóng)都應(yīng)知道, Tab , Ctrl/Cmd + A , Ctrl / Cmd + C 以及 Ctrl / Cmd + V 分別是自動(dòng)聚焦、復(fù)制、粘貼的快捷鍵。

而對(duì)普通用戶可能就不太容易了。即使用戶知道剪貼板是什么,(除了)那些眼神極好或反應(yīng)很快的人,其他情況下很難以突出顯示他們想要的確切文字。若用戶不知道鍵盤快捷鍵,也看不到隱藏的編輯菜單,或從未使用右鍵菜單或不知道長按觸屏彈出選項(xiàng)菜單,那么他很可能無法察覺到復(fù)制功能。

那么我們是否應(yīng)該提供一個(gè)“復(fù)制到剪貼板”按鈕來幫助用戶?這功能應(yīng)該會(huì)很有用,即使是對(duì)快捷鍵的人非常熟悉的用戶來說。

關(guān)于剪貼板的安全

幾年前,瀏覽器不可能直接使用剪貼板。開發(fā)人員不得不通過Flash來實(shí)現(xiàn)。

剪貼板看起來無關(guān)緊要,但想象一下,如果瀏覽器能夠隨意查看和操作內(nèi)容,會(huì)發(fā)生什么。JS腳本(包括第三方腳本)能查看剪貼板內(nèi)的文本信息,并將密碼,敏感信息甚至整個(gè)文檔發(fā)送到遠(yuǎn)程服務(wù)器。

現(xiàn)在的剪貼板基本功能有限,有如下限制:

  1. 大多數(shù)瀏覽器支持剪貼板,除了Safari。
  2. 支持因?yàn)g覽器而異 ,有些功能不完整或有問題。
  3. 事件必須由用戶必須發(fā)起,如點(diǎn)擊鼠標(biāo)或按下鍵盤。腳本不能自由訪問剪貼板。

document.execCommand()

此方法就是實(shí)現(xiàn)剪貼板的關(guān)鍵,它可以傳入 cut , copy , paste 三種參數(shù)。從最常用的 document.execCommand('copy') 開始介紹。

在使用之前,我們應(yīng)該檢查瀏覽器是否支持 copy 命令: document.queryCommandSupported('copy'); document.queryCommandEnabled('copy'); ,這兩個(gè)方法效果相同。

但在Chrome下,盡管Chrome確實(shí)支持使用 copy 命名,但兩個(gè)方法都返回 false 。所以最好是將檢查代碼包在一個(gè) try-catch 代碼塊中。

下一步,我們應(yīng)該允許用戶復(fù)制什么呢?必須突出顯示文本,所有瀏覽器都可用 select() 方法選擇文本input和textarea內(nèi)的文本。同時(shí)Firefox和Chrome / Opera也支持 document.createRange 方法,該方法允許從任何元素中選擇文本,如下:

// select text in #myelement node
  var
   myelement = document.getElementById('#myelement'),
   range = document.createRange();
  range.selectNode(myelement);
  window.getSelection().addRange(range);

但I(xiàn)E / Edge不支持。

clipboard.js

若你不想自己實(shí)現(xiàn)一個(gè)較為健壯的跨瀏覽器剪貼板方法的話, clipboard.js 可以幫你。它有好幾種設(shè)置選項(xiàng)的方式,如H5的data屬性,設(shè)置綁定觸發(fā)元素以及目標(biāo)元素,如:

<input id="copyme" value="text in this field will be copied" />
<button data-clipboard-target="#copyme">copy</button>

自己動(dòng)手實(shí)現(xiàn)

clipboard.js大小僅2Kb,若僅實(shí)現(xiàn)如下的部分功能的話,那么可以在20行的代碼內(nèi)實(shí)現(xiàn):

僅部分表單元素可被復(fù)制

若在不支持的瀏覽器中(沒錯(cuò),就是指Safari),可突出顯示選中文本,并提示用戶按 Ctrl / Cmd + C 。

像clipboard.js一樣,先創(chuàng)建一個(gè)button用于觸發(fā)方法,它具有一個(gè)data屬性 data-copytarget ,指向要copy的元素(即 #website )

<input type="text" id="website" value="http://www.sitepoint.com/" />
<button data-copytarget="#website">copy</button>
一個(gè)立即執(zhí)行函數(shù)表達(dá)式綁定click事件的函數(shù),該函數(shù)用于解析 data-copytarget 屬性內(nèi)容,選擇對(duì)應(yīng)字段的文本并執(zhí)行 document.execCommand('copy') ,。若失敗,文本保持選中狀態(tài),顯示提示框:
(function() {
 'use strict';
 // click events
 document.body.addEventListener('click', copy, true);
 // event handler
 function copy(e) {
  // find target element
  var
   t = e.target,
   c = t.dataset.copytarget,
   inp = (c ? document.querySelector(c) : null);
  // is element selectable?
  if (inp && inp.select) {
   // select text
   inp.select();
   try {
    // copy text
    document.execCommand('copy');
    inp.blur();
   }
   catch (err) {
    alert('please press Ctrl/Cmd+C to copy');
   }
  }
 }
})();

示例

雖然在上例中,算上樣式和動(dòng)畫的代碼,代碼已經(jīng)超過20行了,但動(dòng)畫和樣式是可選的。

總結(jié):

  1. 通過 .select() 選擇要復(fù)制的表單元素的內(nèi)容
  2. 調(diào)用 document.execCommand("copy") 方法
  3. 調(diào)用 .blur() 方法,從表單元素中移除焦點(diǎn)
  4. 將第2、3步包在 try catch 塊中,在不支持的瀏覽器下則提示

其他方式

有很多新穎的剪貼板應(yīng)用方式。例如 Trello.com ,將鼠標(biāo)懸停在卡片上時(shí),可以按 Ctrl / Cmd + C 并將該卡片的鏈接地址復(fù)制到剪貼板。其背后實(shí)現(xiàn)的方式為:先創(chuàng)建一個(gè)包含URL的隱藏表單元素,然后選中并復(fù)制其內(nèi)容。非常巧妙且實(shí)用 —— 我懷疑很少有用戶知道這個(gè)功能!

總結(jié)

以上所述是小編給大家介紹的20行JS代碼實(shí)現(xiàn)粘貼板復(fù)制功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • JS button按鈕實(shí)現(xiàn)submit按鈕提交效果

    JS button按鈕實(shí)現(xiàn)submit按鈕提交效果

    今天在使用表單是同時(shí)使用POST更新、刪除操作。然而form表單的 submit 且一旦提交則全部提交,所以想到的實(shí)現(xiàn)方法就是 使用button實(shí)現(xiàn),怎么實(shí)現(xiàn)呢?下面小編給大家分享JS button按鈕實(shí)現(xiàn)submit按鈕提交效果,感興趣的朋友參考下吧
    2016-11-11
  • JavaScript圖片處理與合成總結(jié)

    JavaScript圖片處理與合成總結(jié)

    這篇文章主要介紹了JavaScript圖片處理與合成的相關(guān)知識(shí)點(diǎn)以及相關(guān)實(shí)例代碼分析,有興趣的朋友學(xué)習(xí)下。
    2018-03-03
  • JS組件Bootstrap Table使用實(shí)例分享

    JS組件Bootstrap Table使用實(shí)例分享

    這篇文章主要為大家詳細(xì)介紹了JS組件Bootstrap Table分頁使用方法,具有一定的實(shí)用性,感興趣的小伙伴們可以參考一下
    2016-05-05
  • JavaScript中innerHTML使用方法實(shí)例

    JavaScript中innerHTML使用方法實(shí)例

    js中常常用到innerHTML,其作用就是獲取到標(biāo)簽里面的內(nèi)容,同時(shí)也可以為標(biāo)簽添加內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于JavaScript中innerHTML使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • javascript實(shí)現(xiàn)的元素拖動(dòng)函數(shù)宿主為瀏覽器

    javascript實(shí)現(xiàn)的元素拖動(dòng)函數(shù)宿主為瀏覽器

    這篇文章主要介紹了javascript實(shí)現(xiàn)的元素拖動(dòng),將相應(yīng)的元素對(duì)象的引用傳到函數(shù)中
    2014-07-07
  • JavaScript枚舉選擇jquery插件代碼實(shí)例

    JavaScript枚舉選擇jquery插件代碼實(shí)例

    這篇文章主要介紹了JavaScript枚舉選擇jquery插件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 正則表達(dá)式刪除JavaScript代碼中的空格、注釋和換行符

    正則表達(dá)式刪除JavaScript代碼中的空格、注釋和換行符

    這篇文章主要介紹了正則表達(dá)式刪除JavaScript代碼中的空格、注釋和換行符,需要的朋友可以參考下
    2023-12-12
  • javascript 對(duì)象 與 prototype 原型用法實(shí)例分析

    javascript 對(duì)象 與 prototype 原型用法實(shí)例分析

    這篇文章主要介紹了javascript 對(duì)象 與 prototype 原型用法,結(jié)合實(shí)例形式分析了javascript 對(duì)象 與 prototype 原型實(shí)現(xiàn)對(duì)象創(chuàng)建、繼承、拷貝等相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 原生JS面向?qū)ο髮?shí)現(xiàn)打字小游戲

    原生JS面向?qū)ο髮?shí)現(xiàn)打字小游戲

    這篇文章主要為大家詳細(xì)介紹了原生JS面向?qū)ο髮?shí)現(xiàn)打字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Canvas 繪制粒子動(dòng)畫背景

    Canvas 繪制粒子動(dòng)畫背景

    本文主要分享了Canvas 繪制粒子動(dòng)畫背景的示例代碼。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02

最新評(píng)論