Přejít k navigační liště

Zdroják » JavaScript » Prostě to tam „pejstni“ aneb použití Clipboard API

Prostě to tam „pejstni“ aneb použití Clipboard API

Články JavaScript

Stručné představení práce se schránkou prostřednictvím W3C Clipboard API.

Nálepky:

Borek Bernard včera na Twitteru nadhodil téma pokročilé práce se schránkou, která je součástí Clipboard API.

Dnes na to navážeme a předvedeme vám, jak snadno se v JavaScriptu se schránkou pracuje. Návod vychází z jednotlivých textů na developer.tizen.org, které jsou pod CC BY 3.0, ukázky kódu pak jsou pod BSD-3-Clause.

Vkládání ze schránky

Pokud chcete kontrolovat vkládání textu (a v budoucnu i jiného obsahu) ze schránky, zaregistrujte si obsluhu události paste na úrovni dokumentu.

   document.addEventListener("paste", function(e)
   {
      pasteHandler(e);
   }, false);

Následný kód ukazuje nejjednodušší obsloužení události. Vypne výchozí handler prohlížeče a vloží textový obsah schránky do stránky.

function pasteHandler(e) 
   {
      e.preventDefault();
      pasteTarget.innerHTML = e.clipboardData.getData("text/plain");
   };    

Volání preventDefault ve vaší aplikaci si musíte dobře rozmyslet, jeho nerozumným použitím byste mohli uživateli zabránit práci se schránkou např. v běžných formulářových polích. Proto preventDefault  volejte jen v případech, kdy celou událost opravdu kompletně obsluhujete (např. jen v případě, když má fokus vámi obsluhovaný UI prvek).

Pro tuhle i další události platí, že nevíte, jak uživatel ve skutečnosti událost vyvolal. Mohlo k tomu dojít klávesovou zkratkou, pomocí myši či jinak (hlasovým povelem apod.). API vás od těchto detailů odstiňuje.

Podrobnosti k použití najdete ve specifikaci.

Kopírování do schránky

Nejprve si zaregistrujte obsluhu události copy:

   document.addEventListener("copy", function(e)
   {
      copyHandler(e);
   }, false);

Vlastní obsluha události může vypadat například následovně. K obsahu vkládanému do schránky musíte přiřadit jeho MIME typ.

   function copyHandler(e) 
   {
      e.preventDefault();

      var range = window.getSelection();
      e.clipboardData.setData("text/plain", range);
   };
</script>

K volání preventDefault se vztahuje totéž co v případě události paste.

Podrobnosti k použití najdete ve specifikaci.

Vyjmutí do schránky

Vyjmutí probíhá podobně jako kopírování. Registrujte si obsluhu události:

   document.addEventListener("cut", function(e) 
   {
      cutHandler(e);
   }, false);

Obsluha události se zásadně neliší:

 function cutHandler(e) 
   {
      e.preventDefault();

      var range = window.getSelection();
      e.clipboardData.setData("text/plain", range);
      // následovalo by vyjmutí obsahu ze stránky
   };   
</script>

Podrobnosti k použijí najdete ve specifikaci.

Ukázka

Uvedený kód si můžete vyzkoušet v online ukázce. Události schránky jsou v ní obslouženy jen jako – zobrazují se v logu ukázky.

Podpora v prohlížečích

Barvy na Can I use sice vypadají na první pohled optimisticky zeleně, ale to jen do té doby než si všimneme, že většina prohlížečů obsahuje jen částečnou podporu specifikace (ostatně ta se stále vyvíjí).

Použití událostí zmiňovaných zde v článku by neměl být problém v žádném současném prohlížeči, ale pokročilejší funkce (např. ono vkládání obrázků, které zmiňoval Borek Bernard ve svém tweetu) jsou zatím hudbou budoucnosti.

Komentáře

Odebírat
Upozornit na
guest
1 Komentář
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
Bohumil Jahoda

Vkládání celých obrázků funguje zatím pouze ve Firefoxu.

Napříč prohlížeči (IE 11 i Chrome) je ale už docela dobře možné vkládat ze schránky screenshot či výřez.

Strategie a AI jako klíč. Do Prahy přijely špičky technologického světa

WebExpo 2025 ukázalo, jak se tvoří budoucnost. Třídenní technologická konference WebExpo 2025 přivedla do Prahy světové i české experty, kteří nabídli inspiraci napříč obory. Hlavním tématem byla propojenost disciplín, význam AI a potřeba otevřenosti vůči novým výzvám – včetně podpory legální imigrace. Ukázalo se, že inovace vznikají nejen v Silicon Valley, ale i tam, kde se nebojíme myslet jinak.

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.