Čau lidi 👋
Přemýšleli jste někdy nad tím, jak některé webové stránky mají funkci „klikněte a zkopírujte“?
- To můžete také udělat, ať už vytváříte webové stránky elektronického obchodu, kde chcete, aby uživatel klikl na tlačítko sdílení a napsal adresu URL produktu na svůj web.
- nebo vytváříte nějakou webovou stránku/dokumentaci, na kterou mohou lidé kliknout a zkopírovat úryvek kódu.
V tomto článku vysvětlím, jak si můžete pohrát se schránkou uživatele 😄.
Začněme 🚀
Abych to lépe vysvětlil, vytvořím demo projekt. Pokud chcete, můžete je následovat.
- Vytvořte si složku a pojmenujte ji, jak chcete.
- V této složce vytvořte dva soubory
- 1.
index.html
- 2.
app.js
- 1.
Přidejte následující kód HTML do index.html
.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Copy to Clipboard 📋</title>
<style></style>
</head>
<body>
<h2>Implementing copy to clipboard with a simple click 📋</h2>
<button>Click to copy</button>
<script src="./app.js"></script>
</body>
</html>
- Nyní vyberte
h2
abutton
prvek vapp.js
:
const h2 = document.querySelector('h2');
const button = document.querySelector('button');
Náhled index.html
ve vašem prohlížeči.
Mělo by to vypadat nějak takto 👇
Nyní ke změně uživatelské schránky musíme použít Clipboard API.
clipboard
objekt je vystaven pomocí navigator.clipboard
vlastnictví.
Přidejte následující kód do app.js
soubor:
const cb = navigator.clipboard;
console.log(cb)
bude vypadat nějak takto 👇
👉 Pamatujte:API schránky je asynchronní, což znamená, že každá metoda vrátí slib, který vyřeší nebo odmítne.
Ke spotřebě promise
můžeme použít buď async/await
syntaxe nebo .then/.catch
.
Čtení textu ze schránky 📋
- Pro čtení textu ze schránky přidám
click
posluchač událostí nabutton
: - V posluchači událostí zavolám metodu nazvanou
readText()
, který je k dispozici nacb
objekt, ke kterému jsme přistupovali dříve:
button.addEventListener('click', async () => {
const text = await cb.readText();
console.log(text);
// output will be whatever you last copied,
// or empty string if the
// copied data is not of type text.
});
- Pro čtení textu ze schránky musí uživatel udělit
read
povolení, jinak operace selže. 👇 - Pokud je povolení odepřeno 👇
Psaní textu do schránky 📋
- Pro zápis textu do uživatelské schránky používáme
writeText()
metoda dostupná nacb
objekt. - Povolení k zápisu uděluje automaticky prohlížeč.
Napište následující kód do app.js
:
button.addEventListener('click', async () => {
// const text = await cb.readText();
// console.log(text);
// writing the inner text of the h2 element
// to the user's clipboard.
cb.writeText(h2.innerText).then(() => {
console.log('text written to clipboard')
})
});
To je pro tento článek vše, přátelé.
Podívejte se, jak snadné je zahrát si se schránkou uživatele 😂.