
Objasnění JS kódu
Ahoj, může mi to někdo vysvětlit?
R1 $('.con').on('click', 'p', function(){
R2 var value = $(this).html();
R3 var tempInput = document.createElement("input");
R4 tempInput.style = "position: absolute; left: -1000px; top: -1000px";
R5 tempInput.value = value;
R6 document.body.appendChild(tempInput);
R7 tempInput.select();
R8 document.execCommand("copy");
R9 document.body.removeChild(tempInput);
R10 });
R1 - jasný
R2 - jasný
R3 - proč mám vytvářet nový element <input> když požadovaný text již mám?
R4 - a ještě navíc ho stylovat?
R5 - jasný
R6 - vytvoření potomka? Proč?
R7 - nevím
R8 - tohle by snad mělo uložit požadovaný text do schránky (to jediné potřebuji)
R9 - jasny
Proč nefunguje prostě jen něco jako
$('.con').on('click', 'code', function()
{
var value = $(this).html();
var tempInput;
tempInput.value = value;
tempInput.select();
document.execCommand("copy");
});
Díky moc.
Ty by si tuším potrebovala súkromného učiteľa :)
Objasneniu toho postupu pomôže pohľad z opačného konca. Cieľ je asi dostať niečo do clipboardu, a zamyslenie pokračuje možnosťami ako to spraviť. Zrejme input element bola najschodnejšia cesta.
Neviem či má javascript nejakú priamočiaru cestu, ak má tak by sa to všetko zredukovalo na jednoduché priradenie.
Abys mohla něco zkopírovat, tak to musí být v něčem, z čeho jde kopírovat. Což je právě třeba input.
Aby si dostala text do schránky, musí byť označený. Potom môžeš zavolať príkaz copy, ktorý ho skopíruje do schránky. Keď požadovaný text nikde na stránke nie je, najjednoduchšie je skopírovať ho do textboxu a označiť.
Štýly sú tam len na to, aby bol daný element schovaný, ale stále aktívny. Ak by si ho schovala cez display: none, nebolo by možné z neho text skopírovať. Preto ho posunú ďaleko doľava a hore. Keby ho posunuli opačným smerom, mohli by sa zobraziť prvky pre skrolovanie.
Kopírovať text z prvku sa dá iba z takého, ktorý sa na stránke nachádza. Preto ho tam vložia.
Označia text. Príkaz copy kopíruje označený text zo stránky. Preto sa postarajú o to, aby označeným textom bol obsah textboxu.
Príkaz copy kopíruje označený text zo stránky.
Ked chces dat nieco do schranky v JS, tak si najprv musis vyhladat ze co existuje v JS na vkladanie do schranky. Ked JS neposkytuje ziadne priame neco.daj_do_schranky(text), tak sa to musi ojebavat nejakym novym prvkom, akj existuje prikaz na kopirovanie prvku. No a to este mozes byt rada, lebo teoreticky ani to nemuselo existovat :D
Neviem ci v JS existuju ine sposoby, nezaujimalo ma to nikdy, ale mozes si hladat googlom alebo v JS referencii.
Select (R8) lze uplatnit jenom pro text z input nebo textarea.
Ještě lze použít metodu setSelectionRange() dostupnou jenom pro input.
Domnívám se tedy, že v zásadě odlišný způsob není k dispozici.