Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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.

Předmět Autor Datum
Ty by si tuším potrebovala súkromného učiteľa :) Objasneniu toho postupu pomôže pohľad z opačného k…
pozorovateľ 11.12.2017 17:34
pozorovateľ
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.
Wikan 11.12.2017 17:36
Wikan
R3 - proč mám vytvářet nový element <input> když požadovaný text již mám? Aby si dostala text do sc…
moose 11.12.2017 21:33
moose
Ked chces dat nieco do schranky v JS, tak si najprv musis vyhladat ze co existuje v JS na vkladanie…
MMnereg 11.12.2017 21:43
MMnereg
Select (R8) lze uplatnit jenom pro text z input nebo textarea. Ještě lze použít metodu setSelectionR… poslední
hynajs 11.12.2017 22:11
hynajs

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.

R3 - proč mám vytvářet nový element <input> když požadovaný text již mám?

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ť.

R4 - a ještě navíc ho stylovat?

Š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.

R6 - vytvoření potomka? Proč?

Kopírovať text z prvku sa dá iba z takého, ktorý sa na stránke nachádza. Preto ho tam vložia.

R7 - nevím

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.

R8 - tohle by snad mělo uložit požadovaný text do schránky (to jediné potřebuji)

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.

Zpět do poradny Odpovědět na původní otázku Nahoru