टेक्स्ट को काटना और चिपकाना सामान्य रूप से और खास तौर पर डेस्कटॉप ऐप्लिकेशन की सबसे ज़्यादा इस्तेमाल की जाने वाली सुविधाओं में से एक है. मैं वेब पर टेक्स्ट कैसे कॉपी करूं? इसमें एक नया और पुराना तरीका है. और यह इस बात पर निर्भर करता है कि किस ब्राउज़र का इस्तेमाल किया जाता है.
आधुनिक तरीका
Async Clipboard API का इस्तेमाल करना
Clipboard.writeText()
वाला तरीका, एक स्ट्रिंग लेता है और एक प्रॉमिस दिखाता है. यह प्रॉमिस तब रिज़ॉल्व होता है, जब टेक्स्ट को क्लिपबोर्ड पर लिखा जाता है. Clipboard.writeText()
को सिर्फ़ ऐसे window
ऑब्जेक्ट से इस्तेमाल किया जा सकता है जिसमें फ़ोकस हो.
क्लासिक तरीका
document.execCommand()
का इस्तेमाल करना
document.execCommand('copy')
को कॉल करने से एक बूलियन वैल्यू मिलती है, जिससे पता चलता है कि कॉपी हुई या नहीं. इस कमांड को क्लिक हैंडलर जैसे किसी उपयोगकर्ता जेस्चर के अंदर कॉल करें. Async Clipboard API से तुलना करने पर, इस तरीके की कुछ सीमाएं हैं. execCommand()
तरीका सिर्फ़ DOM एलिमेंट के साथ काम करता है. यह सिंक्रोनस होता है, इसलिए ज़्यादा डेटा को कॉपी करने से, पेज ब्लॉक हो सकता है. खास तौर पर, ऐसा डेटा जिसे पूरी तरह से बदला जाना चाहिए या साफ़ किया जाना चाहिए.
प्रोग्रेसिव एन्हैंसमेंट
const copyButton = document.querySelector('#copyButton');
const out = document.querySelector('#out');
if ('clipboard' in navigator) {
copyButton.addEventListener('click', () => {
navigator.clipboard.writeText(out.value)
.then(() => {
console.log('Text copied');
})
.catch((err) => console.error(err.name, err.message));
});
} else {
copyButton.addEventListener('click', () => {
const textArea = document.createElement('textarea');
textArea.value = out.value;
textArea.style.opacity = 0;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
const success = document.execCommand('copy');
console.log(`Text copy was ${success ? 'successful' : 'unsuccessful'}.`);
} catch (err) {
console.error(err.name, err.message);
}
document.body.removeChild(textArea);
});
}
इसके बारे में और पढ़ें
- क्लिपबोर्ड का ऐक्सेस अनब्लॉक करना (आधुनिक तरीका)
- निर्देशों को कट और कॉपी करना (क्लासिक तरीका)
डेमो
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link
rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🎉</text></svg>"
/>
<title>How to copy text</title>
</head>
<body>
<h1>How to copy text</h1>
<textarea rows="3">
Some sample text for you to copy. Feel free to edit this.</textarea
>
<button type="button">Copy</button>
</body>
</html>
:root {
color-scheme: dark light;
}
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 1rem;
font-family: system-ui, sans-serif;
}
button {
display: block;
}
const textarea = document.querySelector('textarea');
const button = document.querySelector('button');
button.addEventListener('click', async () => {
try {
await navigator.clipboard.writeText(textarea.value);
} catch (err) {
console.error(err.name, err.message);
}
});