API navigator.clipboard

Interakce s hostitelskou schránkou uživatele je něco, co weboví vývojáři chtěli pro dobré i zlé účely. Na dobré straně je příjemné umožnit uživatelům snadno kopírovat text, jako jsou adresy peněženky nebo názvy poboček; pro zlo, zkopírování škodlivého textu, který uživatel může omylem vložit do formuláře a nechat mu být odcizeny – a pravděpodobně existují další špatné důvody.

Dříve jsme používali document.execCommand('copy') splnit tento úkol, ale bylo to nespolehlivé. navigator.clipboard API poskytuje asynchronní readText a writeText metody pro správu dat schránky. Pojďme se podívat, jak to funguje!

// Write to clipboard
document.body.addEventListener(
    "click", 
    (e) => {
        await navigator.clipboard.writeText("Yo")
    }
)

// Read from clipboard
document.body.addEventListener(
    "click", 
    (e) => {
        const text = await navigator.clipboard.readText()
    }
)

readText a writeText metody jsou dostatečně snadné na použití, ale tento kód nemůžete spustit, kdykoli byste chtěli, kvůli bezpečnostním protokolům prohlížeče. Často je potřeba tento kód použít uvnitř posluchače událostí v důsledku akce provedené uživateli.

Jsem rád, že nyní máme API, které je asynchronní a spolehlivější než hrubé execCommand nářez starých časů. Přesto si občas říkám, jak by se to dalo zneužít, protože přeci jen tam můžete dát jakýkoli text. Udělejme si však navzájem solidní výkon – používejte toto API k dobru, ne ke zlu!