JS實現貼上簿複製功能代碼分享
使用剪貼簿是一項基本技能。身為碼農都應知道, Tab , Ctrl/Cmd + A , Ctrl / Cmd + C 以及 Ctrl / Cmd + V 分別是自動對焦、複製、貼上的快捷鍵。
而對一般使用者可能就不太容易了。即使使用者知道剪貼簿是什麼,(除了)那些眼神極好或反應很快的人,其他情況下很難以突出顯示他們想要的確切文字。若使用者不知道鍵盤快速鍵,也看不到隱藏的編輯選單,或從未使用右鍵選單或不知道長按觸控螢幕彈出選項選單,那麼他很可能無法察覺到複製功能。
那麼我們是否應該提供一個「複製到剪貼簿」按鈕來幫助使用者?這功能應該會很有用,即使是對快捷鍵的人非常熟悉的使用者來說。
關於剪貼簿的安全性
幾年前,瀏覽器不可能直接使用剪貼簿。開發人員不得不透過Flash來實現。
剪貼簿看起來無關緊要,但想像一下,如果瀏覽器能夠隨意查看和操作內容,會發生什麼。 JS腳本(包括第三方腳本)可查看剪貼簿內的文字訊息,並將密碼,敏感資訊甚至整個文件傳送到遠端伺服器。
現在的剪貼簿基本功能有限,有以下限制:
大多數瀏覽器支援剪貼簿,除了Safari。
支援因瀏覽器而異 ,有些功能不完整或有問題。
事件必須由使用者必須發起,例如點擊滑鼠或按下鍵盤。腳本不能自由存取剪貼簿。
document.execCommand()
此方法就是實作剪貼簿的關鍵,它可以傳入cut , copy , paste三種參數。從最常用的 document.execCommand('copy')
開始介紹。
在使用之前,我們應該檢查瀏覽器是否支援copy 命令: document.queryCommandSupported('copy');
或document.queryCommandEnabled('copy');
,這兩個方法效果相同。
但在Chrome下,儘管Chrome確實支援使用 copy 命名,但兩個方法都傳回 false 。所以最好是將檢查程式碼包在一個 try-catch 程式碼區塊中。
下一步,我們該允許使用者複製什麼呢?必須反白顯示文本,所有瀏覽器都可用 select() 方法選擇文本input和textarea內的文本。同時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);
但IE / Edge不支援。
clipboard.js
如果你不想自己實作一個較為健壯的跨瀏覽器剪貼簿方法的話, clipboard.js 可以幫你。它有好幾種設定選項的方式,如H5的data屬性,設定綁定觸發元素以及目標元素,如:
<input id="copyme" value="text in this field will be copied" /> <button data-clipboard-target="#copyme">copy</button>
自己動手實作
clipboard.js大小僅2Kb,若僅實現如下的部分功能的話,那麼可以在20行的程式碼內實現:
僅部分錶單元素可被複製
若在不支援的瀏覽器中(沒錯,就是指Safari),可反白顯示選取文本,並提示使用者按Ctrl / Cmd + C 。
就像clipboard.js一樣,先建立一個button用於觸發方法,它具有一個data屬性data-copytarget ,指向要copy的元素(即#website )
<input type="text" id="website" value="http://www.sitepoint.com/" /> <button data-copytarget="#website">copy</button> 一个立即执行函数表达式绑定click事件的函数,该函数用于解析 data-copytarget 属性内容,选择对应字段的文本并执行 document.execCommand('copy') ,。若失败,文本保持选中状态,显示提示框: (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'); } } } })();
範例
雖然在上例中,算上樣式和動畫的程式碼,程式碼已經超過20行了,但動畫和樣式是可選的。
總結:
透過.select() 選擇要複製的表單元素的內容
呼叫document.execCommand( "copy") 方法
呼叫.blur() 方法,從表單元素移除焦點
將第2、3步驟包在try catch 區塊中,在不支援的瀏覽器下則提示
#其他方式
##有很多新穎的剪貼簿應用方式。例如 Trello.com ,將滑鼠停留在卡片上時,可以按 Ctrl / Cmd + C 並將該卡片的連結位址複製到剪貼簿。背後實現的方式為:先建立一個包含URL的隱藏表單元素,然後勾選並複製其內容。非常巧妙且實用 —— 我懷疑很少有用戶知道這個功能!
JavaScript實作複製內容到貼簿程式碼_javascript技巧
js實作點擊圖片將圖片位址複製到貼上簿的方法_javascript技巧#
以上是JS實現貼上簿複製功能代碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

豆包app裡會有很多ai創作的功能,那麼豆包app有什麼功能呢?使用者可以透過這個軟體來創作繪畫,和ai進行聊天,也能夠為用戶生成文章,幫助大家搜尋歌曲等。這篇豆包app功能介紹就能夠告訴大家具體的操作方法,以下就是具體內容,趕快看看吧!豆包app有什麼功能答:可以畫畫、聊天、寫文、找歌。功能介紹:1、問題查詢:可以透過ai來更快的找到問題的答案,什麼樣的問題都是可以詢問。 2.圖片生成:可以有ai來為大家創造不同的圖片,只需要告訴大家大概的要求。 3.ai聊天:能夠為用戶創建一個可以聊天的ai,

vivox100s和x100手機都是vivo手機產品線中的代表機型,它們分別代表了vivo在不同時間段內的高端技術水平,因此這兩款手機在設計、性能和功能上均有一定區別。本文將從效能比較和功能解析兩個面向對這兩款手機進行詳細比較,幫助消費者更好地選擇適合自己的手機。首先,我們來看vivox100s和x100在效能上的比較。 vivox100s搭載了最新的

隨著網路的快速發展,自媒體這個概念已經深入人心。那麼,自媒體到底是什麼呢?它有哪些主要特點和功能呢?接下來,我們將一一探討這些問題。一、自媒體到底是什麼?自媒體,顧名思義,就是自己就是媒體。它是指透過網路平台,個人或團隊可以自主創建、編輯、發布和傳播內容的資訊載體。不同於傳統媒體,如報紙、電視、電台等,自媒體具有更強的互動性和個人化,讓每個人都能成為訊息的生產者和傳播者。二、自媒體的主要特色和功能有哪些? 1.低門檻:自媒體的崛起降低了進入媒體產業的門檻,不再需要繁瑣的設備和專業的團隊,一部手

如果您需要遠端編程任何設備,這篇文章會為您帶來幫助。我們將分享編程任何設備的頂級GE通用遠端代碼。通用電氣的遙控器是什麼? GEUniversalRemote是一款遙控器,可用於控制多個設備,如智慧電視、LG、Vizio、索尼、藍光、DVD、DVR、Roku、AppleTV、串流媒體播放器等。 GEUniversal遙控器有各種型號,具有不同的功能和功能。 GEUniversalRemote最多可以控制四台設備。頂級通用遙控器代碼,可在任何裝置上編程GE遙控器配備一組代碼,使其能夠與不同設備配合。您可

身為一名程式設計師,對於能夠簡化程式設計體驗的工具,我感到非常興奮。借助人工智慧工具的幫助,我們可以產生演示程式碼,並根據需求進行必要的修改。在VisualStudioCode中新引入的Copilot工具讓我們能夠創建具有自然語言聊天互動的AI生成程式碼。透過解釋功能,我們可以更好地理解現有程式碼的含義。如何使用Copilot產生程式碼?要開始,我們首先需要取得最新的PowerPlatformTools擴充。要實現這一點,你需要進入擴充頁面,搜尋“PowerPlatformTool”,然後點擊Install按鈕

隨著小紅書在年輕人中的流行,越來越多的人開始利用這個平台分享各方面的經驗和生活見解。如何有效管理多個小紅書帳號成為關鍵問題。在本文中,我們將討論一些小紅書帳號管理軟體的功能,並探討如何更好地經營小紅書帳號。隨著社群媒體的發展,許多人發現自己需要管理多個社群帳號。對於小紅書用戶來說,這也是一個挑戰。一些小紅書帳號管理軟體可以幫助使用者更輕鬆地管理多個帳號,包括自動發佈內容、定時發布、資料分析等功能。透過這些工具,使用者可以更有效率地管理他們的帳號,提高帳號的曝光率和關注。另一、小紅書帳號管理軟體有

PHP技巧:快速實現回到上一頁功能在網頁開發中,常常會遇到需要實作返回上一頁的功能。這樣的操作可以提高使用者體驗,讓使用者更方便地在網頁之間進行導航。在PHP中,我們可以透過一些簡單的程式碼來實現這項功能。本文將介紹如何快速實現返回上一頁功能,並提供具體的PHP程式碼範例。在PHP中,我們可以使用$_SERVER['HTTP_REFERER']來取得上一頁的URL

《探索Discuz:定義、功能及程式碼範例》隨著網路的快速發展,社群論壇已成為人們獲取資訊、交流觀點的重要平台。在眾多的社群論壇系統中,Discuz作為國內較知名的一種開源論壇軟體,備受廣大網站開發者和管理員的青睞。那麼,什麼是Discuz?它又有哪些功能,能為我們的網站提供怎樣的幫助呢?本文將對Discuz進行詳細介紹,並附上具體的程式碼範例,幫助讀者更
