溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JS復(fù)制對應(yīng)id的內(nèi)容到粘貼板(Ctrl+C效果)

發(fā)布時間:2020-10-25 08:20:43 來源:腳本之家 閱讀:491 作者:鍋子博客 欄目:web開發(fā)

前言

最近在做一個按鈕,實現(xiàn)的效果是當(dāng)點擊后復(fù)制url到黏貼板,但不是當(dāng)前頁面url,而是對應(yīng)一個元素的url,且一個頁面會有多個url。一開始找到一個方法,但是竟然只兼容IE瀏覽器,神奇了,竟然有只兼容IE的東西。后來發(fā)現(xiàn)一個zeroclipboard.js這個插件,但是怎么也搞不出那個效果,有點麻煩。

最后翻到了一個js封裝好的方法,有效!

想要實現(xiàn)的一個效果是,下面html代碼:

<tr>
 <td>
 <a id="copy_{$key}" onclick="getUrl('{$key}')">復(fù)制文件鏈接</a>
 <input id="file_{$key}" value="{$file.file_url}" />
 </td>
</tr> 

點擊復(fù)制文件鏈接這個按鈕,復(fù)制input框里的value值,是傳進(jìn)去的一個url;首先點擊a標(biāo)簽會觸發(fā)getUrl這個函數(shù);傳進(jìn)去id用于找到對應(yīng)的input然后取值(因為遍歷了多個td,有許多個input框一一對應(yīng)去取)。

下面js代碼:

<pre><script type="application/javascript">
 
 function getUrl(id) {
  if (copyToClipboard(document.getElementById("file_"+id))){
   alert("成功復(fù)制到黏貼板!");
  }else{
   alert("復(fù)制到黏貼板失??!");
  }
 }
 
 function copyToClipboard(elem) {
  // create hidden text element, if it doesn't already exist
  var targetId = "_hiddenCopyText_";
  var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA";
  var origSelectionStart, origSelectionEnd;
  if (isInput) {
   // can just use the original source element for the selection and copy
   target = elem;
   origSelectionStart = elem.selectionStart;
   origSelectionEnd = elem.selectionEnd;
  } else {
   // must use a temporary form element for the selection and copy
   target = document.getElementById(targetId);
   if (!target) {
    var target = document.createElement("textarea");
    target.style.position = "absolute";
    target.style.left = "-9999px";
    target.style.top = "0";
    target.id = targetId;
    document.body.appendChild(target);
   }
   target.textContent = elem.textContent;
  }
  // select the content
  var currentFocus = document.activeElement;
  target.focus();
  target.setSelectionRange(0, target.value.length);
 
  // copy the selection
  var succeed;
  try {
   succeed = document.execCommand("copy");
  } catch(e) {
   succeed = false;
  }
  // restore original focus
  if (currentFocus && typeof currentFocus.focus === "function") {
   currentFocus.focus();
  }
 
  if (isInput) {
   // restore prior selection
   elem.setSelectionRange(origSelectionStart, origSelectionEnd);
  } else {
   // clear temporary content
   target.textContent = "";
  }
  return succeed;
 }
</script></pre>

getUrl中調(diào)用了封裝好的copyToClipboard方法實現(xiàn)了功能。有一點的是html中input的樣式用進(jìn)行隱藏,因為不知道為什么用type="hiden"或者display="none"去隱藏都只會獲取源代碼而不是動態(tài)的url遍歷出來的值。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI