This article will analyze 20 lines of JS code to implement the pasteboard function. It is very good and has reference value. Friends in need can refer to it
Using the clipboard is a basic skill. As a coder, everyone should know that Tab, Ctrl/Cmd A, Ctrl/Cmd C and Ctrl/Cmd V are the shortcut keys for auto-focus, copy and paste respectively.
It may not be easy for ordinary users. Even if a user knows what a clipboard is, it will be difficult to highlight the exact text they want (except for) those with great eyesight or quick reflexes. If the user doesn't know the keyboard shortcuts, can't see the hidden editing menu, has never used the right-click menu, or doesn't know that long-pressing the touch screen brings up the options menu, then he will probably not be aware of the copy function.
So should we provide a "Copy to Clipboard" button to help the user? This feature should be useful even for users who are very familiar with keyboard shortcuts.
About clipboard security
A few years ago, it was impossible for browsers to use the clipboard directly. Developers had to implement it through Flash.
The clipboard may seem inconsequential, but imagine what would happen if the browser could see and manipulate the content at will. JS scripts (including third-party scripts) can view the text information in the clipboard and send passwords, sensitive information, or even entire documents to the remote server.
The current clipboard has limited basic functions and has the following restrictions:
Most browsers support the clipboard, except Safari.
Support varies by browser, and some features are incomplete or have issues.
Events must be initiated by the user, such as clicking the mouse or pressing the keyboard. The script does not have free access to the clipboard.
document.execCommand()
This method is the key to implementing the clipboard. It can pass in three parameters: cut, copy, and paste. . Let’s start with the most commonly used document.execCommand('copy')
.
Before using, we should check whether the browser supports the copy command: document.queryCommandSupported('copy');
or document.queryCommandEnabled('copy');
, these two methods have the same effect.
But under Chrome, although Chrome does support the use of copy naming, both methods return false. So it's better to wrap the checking code in a try-catch block.
Next step, what should we allow users to copy? Text must be highlighted, and all browsers can use the select() method to select text within text input and textarea. At the same time, Firefox and Chrome/Opera also support the document.createRange
method, which allows selecting text from any element, as follows:
// select text in #myelement node var myelement = document.getElementById('#myelement'), range = document.createRange(); range.selectNode(myelement); window.getSelection().addRange(range);
but IE/Edge does not support it.
clipboard.js
If you don’t want to implement a more robust cross-browser clipboard method yourself, clipboard.js can help you. It has several ways to set options, such as H5's data attribute, setting binding trigger elements and target elements, such as:
<input id="copyme" value="text in this field will be copied" /> <button data-clipboard-target="#copyme">copy</button>
Do it yourself
clipboard The .js size is only 2Kb. If only some of the following functions are implemented, it can be implemented within 20 lines of code:
Only some form elements can be copied
If in an unsupported browser (yes, Safari), you can highlight the selected text and prompt the user to press Ctrl/Cmd C.
Like clipboard.js, first create a button to trigger the method, which has a data attribute data-copytarget, pointing to the element to be copied (i.e. #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'); } } } })();
Example
Although in the above example, including the code for styles and animations, the code has exceeded 20 lines, animations and styles are optional.
Summary:
Select the content of the form element to be copied through .select()
Call document.execCommand( "copy") method
Call the .blur() method to remove focus from the form element
Include steps 2 and 3 In the try catch block, if the browser does not support it, it will prompt
Other methods
There are many novel clipboard application methods. For example, Trello.com, when hovering over a card, you can press Ctrl / Cmd C
and copy the card's link address to your clipboard. The implementation behind it is to first create a hidden form element containing the URL, then select and copy its content. Very clever and useful - I suspect very few users know about this feature!
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
How to implement a circular Nodelist Dom list using JS
How to implement text color change after clicking in Vue
How to set the background color for a separate page in Vue-cli
The above is the detailed content of How to implement pasteboard copy function using JS. For more information, please follow other related articles on the PHP Chinese website!

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.

Choosing Python or JavaScript should be based on career development, learning curve and ecosystem: 1) Career development: Python is suitable for data science and back-end development, while JavaScript is suitable for front-end and full-stack development. 2) Learning curve: Python syntax is concise and suitable for beginners; JavaScript syntax is flexible. 3) Ecosystem: Python has rich scientific computing libraries, and JavaScript has a powerful front-end framework.

The power of the JavaScript framework lies in simplifying development, improving user experience and application performance. When choosing a framework, consider: 1. Project size and complexity, 2. Team experience, 3. Ecosystem and community support.

Introduction I know you may find it strange, what exactly does JavaScript, C and browser have to do? They seem to be unrelated, but in fact, they play a very important role in modern web development. Today we will discuss the close connection between these three. Through this article, you will learn how JavaScript runs in the browser, the role of C in the browser engine, and how they work together to drive rendering and interaction of web pages. We all know the relationship between JavaScript and browser. JavaScript is the core language of front-end development. It runs directly in the browser, making web pages vivid and interesting. Have you ever wondered why JavaScr

Node.js excels at efficient I/O, largely thanks to streams. Streams process data incrementally, avoiding memory overload—ideal for large files, network tasks, and real-time applications. Combining streams with TypeScript's type safety creates a powe

The differences in performance and efficiency between Python and JavaScript are mainly reflected in: 1) As an interpreted language, Python runs slowly but has high development efficiency and is suitable for rapid prototype development; 2) JavaScript is limited to single thread in the browser, but multi-threading and asynchronous I/O can be used to improve performance in Node.js, and both have advantages in actual projects.

JavaScript originated in 1995 and was created by Brandon Ike, and realized the language into C. 1.C language provides high performance and system-level programming capabilities for JavaScript. 2. JavaScript's memory management and performance optimization rely on C language. 3. The cross-platform feature of C language helps JavaScript run efficiently on different operating systems.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6
Visual web development tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Mac version
God-level code editing software (SublimeText3)

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
