document.execCommand('copy') v Promise (Callbacku) rubrika: Programování: JavaScript
Ahoj,
mam mensi problem s document.execCommand('copy') v Promise.
Jde o to, ze potrebuji data, ktere mi vrati API kopirovat do schranky.
Pouzivam klaciske
function copyToClipboard(textToClipboard) { var textarea = document.createElement("TEXTAREA"); textarea.value= textToClipboard; document.body.appendChild(textarea); textarea.select(); try { var successful = document.execCommand('copy'); document.body.removeChild(textarea); return successful } catch(err) { document.body.removeChild(textarea); return false } }
Normalne to funguje, ale pokud to pozivam v Promise nebo v callbaku tak mi to nejde.
axios.get('apiUrl') .then(function (response){ const result = copyToClipboard( JSON.parse(response.request.responseText).textToClipboard; ); console.log(result); //false });
Obdobne mi to nejde ani s jQuery. Skonci to na tom, ze return successful vrati false. Nekaje napady cim to muze byt? Kdyz dam pryc document.body.removeChild(textarea), tak textarea je vytvorena a selectnuta. Kdyz dam document.execCommand('copy'); do konzole v browseru, tak to funguje...
Pouzito v Reactu bez server side.
Je to skutečně tím, že některé činnosti lze vykonat výhradně jen v reakci na uživatelskou interakci. Typicky se toto řeší tím, že si data nachystám s předstihem, tedy třeba už při kliknutí/mousedown na prvek, ve kterém následně akci "copy" očekávám.
Více info viz poznámka pod čarou [1] na MDN k execCommand.
Pro zobrazení všech 4 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře