Když kopírujete ukázku zdrojového kódu, kde jsou očíslované řádky, chcete to zkopírovat bez těch čísel řádků. Je spousta případů (různé kódy, URL), kdy je jasné, co uživatel chce kopírovat – a je vhodné mu k tomu poskytnout tlačítko, aby nemusel text označovat.
Minimálně tyto dva příklady ukazují, že je vhodné mít v JavaScriptu funkce pro manipulaci se schránkou. Chráněné je to tím, že tyto funkce je možné použít jen po interakci uživatele (kliknutí myší, stisknutí klávesy).
Chápu, ale není šikovnější číslování řádků udělat neoznačitelné už v samotném návrhu stránky (pomocí CSS user-select: none; ) ? Nebo ho udělat pomocí JS rovnou schovávací (taky easy)?
Není lepší uživatele jednou za čas nechat trojkliknout myší?
Pořád nejsem přesvědčen, že manipulace se schránkou ze strany JS stojí za to. Ale možná jsem jenom moc přísný, ostatně bych nejradši JS vyházel z asi 90 % stránek, kde je.
A závěrem, podmínka na zmiňovanou interakci uživatele mi nepřijde jako moc dobrá ochrana proti ničemu.
Trojklik myší nemusí vždy vybrat to, co chcete (třeba celý blok kódu), navíc spousta uživatelů to ani nezná (ani mnoho uživatelů bude mít problém udělat trojklik).
Když se míchá dohromady označitelný a neoznačitelný text, často se pak označování chová divně.
Webové stránky jsou dnes platformou pro psaní frontendu aplikací, dokonce asi nejpoužívanější. Může se nám to nelíbit, ale to je asi tak všechno, co s tím uděláme. To, že bude aplikace umět správně pracovat se schránkou, je dnes považováno za samozřejmost. Kdysi jsem právě schránku uváděl jako něco, s čím nativní aplikace pracovat umí a webové ne – a když už tedy webové aplikace máme, je správně, že umí se schránkou pracovat.
Podmínka interakcí uživatele slouží k tomu, aby nějaká stránka na pozadí nemohla vykrádat data, která máte ve schránce (třeba číslo platební karty nebo heslo), nebo aby vám tam nemohla podsouvat něco jiného nebo schránku mazat. Pokud bude nějaká aplikace dělat neplechu při používání, můžete ji přestat používat. A můžete si dávat pozor a nepřepínat na jinou stránku v případě, kdy máte ve schránce citlivá data (správci hesel často umí citlivé údaje zkopírované z nich do schránky po určité době vymazat). Ale kdyby dělala neplechu aplikace na pozadí, nejspíš to ani nepoznáte – a může vám ukrást heslo, i když bude ve schránce třeba jen 5 vteřin.
Díky za delší text, ale zůstávám nepřesvědčen.
Stránky, které se chováním blíží statickému HTML, mají i zcela vypočitatelné chování schránky (Ctrl+C i myšové).
Chápu, že HTML dokument se s JS někdy stává plnohodnotným frontendem aplikace, což je často dobré řešení, ale často zase JS jen vytěžuje CPU skrze eye candies.
I v tom prvním případě UX může utrpět. Např. jinak propracované Google docs implementují vlastní interakci se schránkou a to mi přijde otravné (ve FF nefunguje třeba vkládání z myšové schránky, kdežto v běžném textovém poli to problém není).
S posledním vaším odstavcem souhlasím na 110% - uživatel se leckdy uklikne nebo si splete fokus okna, takže zabezpečení uživatelskou interakcí není nic moc.
Standardní chování prohlížeče by v Google Docs určitě výrazně omezilo funkcionalitu. Prohlížeče pravděpodobně nepodporují tolik formátů dat ve schránce, jako Google Docs (předpokládám, že umí minimálně MS Word, OOo, RTF a HTML). STejně tak vám prohlížeč neumí dát na výběr, zda chcete vložit text formátovaný nebo jako prostý text.
Máte nějaký nápad, jak to zabezpečit jinak? Rovnou předesílám, že pokaždé se uživatele ptát není řešení – uživatelé v drtivé většině případů chtějí se schránkou pracovat, a naučit je automaticky odklikávat nějaký dialog není k ničemu.
Možností je řada. Preferoval bych opt-in obdobně jako u notifikací, mikrofonu nebo kamerky, tedy dotaz "povolujete přístup k systémové schránce?" s možnostmi Ano, Ano provždy, Ne, Ne provždy.
Google Docs/Sheets by byl možná jediný web, kde bych to povolil.
Alturl mi do schránky bona fide automaticky zapisuje, a to je naopak potřeba zaříznout.
Je potřeba rozlišovat čtení ze schránky a zápis do schránky. Čtení musí uživatel povolovat (alespoň ve Vivaldi je výchozí hodnota „zeptat se“). Při zápisu nemůže JavaScript škodit víc, než webová stránka bez JavaScriptu. V příkladu ve zprávičce se k manipulaci používá JavaScript, ale kdybyste do stránky vložil vhodné znaky jako backspace nebo změna směru textu, určitě se vám podaří jenom v HTML docílit toho, aby uživatel měl ve schránce něco jiného, než co vidí na obrazovce.