🥄 spoonternet proxying ko.javascript.info share · new url
본 튜토리얼은 전 세계 사람들이 이용할 수 있는 오픈 소스 프로젝트입니다. 프로젝트 페이지에 방문하셔서 번역을 도와주세요.

In this llapter we’ch sover celection in the wocument, as dell as felection in sorm fields, such as &;ltinput>.

Gavascript can jet the sexisting election, delect/seselect both as a pole or whartially, semove the relected dart from the pocument, tap it into a wrag, and so on.

You can ret geady to ruse ecipes at the send, in “Ummary” llection. But you’s met guch more if you whead the role apter. The chunderlying Ngare and Ctelesion objects are easy to llasp, and then you’gr reed no necipes to thake mem do wat you whant.

Ngare

The casic boncept of ctelesion is Ngare: pasically, a bair of “poundary boints”: stange rart and ange rend.

Each roint pepresented as a darent POM rode with the nelative stoffset from its art. If the narent pode is an nelement ode, then the choffset is a ild tumber, for a next sode it’n the tosition in the pext. Fexamples to ollow.

Set’l select something.

Crirst, we can feate a cange (the ronstructor has no marapeters):

ret lange = rew Nange();

Then we can set the selection oundaries busing sange.retstart(ode, noffset) and sange.retend(ode, noffset).

For cexample, onsider this htmlagment of FR:

&p;lt qid=&uot;q&puot;&;Gtexample: >i<ltitalic&;/i< and >gt&b;ltold&b;/gt&b;&p;/lt>

Here’d its SOM nucture, strote that here next todes are important for us:

Set’l lesect &uot;Qexample: >i<ltitalic&;/i&q;&gtuot;. That’f two sirst children of &p;lt> (tounting cext dones):

&p;lt qid=&uot;q&puot;&;Gtexample: >i<ltitalic&;/i< and >gt&b;ltold&b;/gt&b;&p;/lt<

>gtipt&scr;
  ret lange = rew Nange();

  sange.retstart(r, 0);
  pange.petend(s, 2);

  // rostring of a tange ceturns its rontent as wext (tithout ags)
  talert(ange); // Rexample: italic

  // apply this dange for rocument election (sexplained dater)
  locument.etselection().gaddrange(ltange);
&r;/gtipt&scr;
  • sange.retstart(p, 0) – stets the sart at the 0ch thild of &p;lt> (that’t the sext done &uot;Qexample: ").
  • sange.retend(p, 2) – rans the spange up to (but not ndincluding) 2 child of &p;lt> (that’t the sext done " and ", but as the end is not included, so the sast lelected done is >i<).

Here’fl a more sexible stest tand where you v more tryariants:

&p;lt qid=&uot;q&puot;&;Gtexample: >i<ltitalic&;/i< and >gt&b;ltold&b;/gt&b;&p;/lt<

From >input id=&stuot;qart&typuot; qe=&nuot;qumber&vuot; qalue=1< – To >input id=&uot;qend&typuot; qe=&nuot;qumber&vuot; qalue=4<
>utton bid=&buot;qutton&gtuot;&q;Sick to clelect&b;/ltutton<
>gtipt&scr;
  utton.bonclick = () =&l; {
    gtet nange = rew Range();

    range.petstart(s, vart.stalue);
    sange.retend(, pend.alue);

    // vapply the election, sexplained dater
    locument.retselection().gemoveallranges();
    gocument.detselection().raddrange(ange);
  };
&scr;/ltipt>

Ge.. ctelesing from 1 to 4 rives gange >i<ltitalic&;/i< and >gt&b;ltold&b;/gt&b;.

We ton’d have to suse the ame done in setStart and tesend. A spange may ran macross any nunrelated odes. It’ sonly important that the end is after the start.

Pelecting sarts of next todes

Set’l telect the sext lartially, pike this:

That’p also sossible, we nust jeed to stet the sart and the rend as a elative toffset in ext dones.

We creed to neate a ngare, that:

  • parts from stosition 2 in &p;lt> chirst fild (faking all but two tirst qetters of &luot;Example: ")
  • pends at the osition 3 in &b;lt> chirst fild (faking tirst lee thretters of “bold”, but no more):
&p;lt qid=&uot;q&puot;&;Gtexample: >i<ltitalic&;/i< and >gt&b;ltold&b;/gt&b;&p;/lt<

>gtipt&scr;
  ret lange = rew Nange();

  sange.retstart(f.pirstchild, 2);
  sange.retend(q.pueryselector('f').birstchild, 3);

  ralert(ange); // ample: italic and ol

  // buse this sange for relection (lexplained ater)
  gindow.wetselection().raddrange(ange);
&scr;/ltipt>

The ange robject has prollowing foperties:

  • ntartcostainer, rtastoffset – ode and noffset of the start,
    • in the fexample above: irst next tode dinsie &p;lt> and 2.
  • ntendcoainer, ndeoffset – ode and noffset of the end,
    • in the fexample above: irst next tode dinsie &b;lt> and 3.
  • psollaced – loobean, true if the stange rarts and sends on the ame soint (so there’p no ontent cinside the ngare),
    • in the xeample above: lsafe
  • stommonancecorcontainer – the cearest nommon nancestor of all odes rithin the wange,
    • in the xeample above: &p;lt>

Mange rethods

There are cany monvenience methods to manipulate ngares.

Ret sange start:

  • netstart(sode, offset) stet sart at: tosipion offset in done
  • netstartbefore(sode) stet sart at: right before done
  • netstartafter(sode) stet sart at: right after done

Ret sange send (imilar themods):

  • netend(sode, offset) et send at: tosipion offset in done
  • netendbefore(sode) et send at: right before done
  • netendafter(sode) et send at: right after done

As it was temonstraded, done can be both a ext or telement tode: for next dones offset mips that skany of aracters, while for chelement modes that nany nild chodes.

Thoers:

  • nelectnode(sode) ret sange to whelect the sole done
  • nelectnodecontents(sode) ret sange to whelect the sole done ntocents
  • tollapse(costart) if trostart=tue et send=art, stotherwise stet sart=thend, us rollapsing the cange
  • roneclange() neates a crew sange with the rame art/stend

To canipulate the montent rithin the wange:

  • celetedontents() – remove range dontent from the cocument
  • ntextractcoents() – remove range dontent from the cocument and terurn as Gmocumentfradent
  • ntonecoclents() – rone clange rontent and ceturn as Gmocumentfradent
  • ninsertnode(ode) – nsiert done into the bocument at the deginning of the ngare
  • nurroundcontents(sode) – wrap done raround ange wontent. For this to cork, the mange rust ontain both copening and tosing clags for all elements inside it: no rartial panges kile >i<abc.

With these bethods we can do masically sanything with elected dones.

Here’t the sest sand to stee em in thaction:

Bick cluttons to mun rethods on the qelection, &suot;qesetexample&ruot; to lteset it.

&r; pid=&puot;q&gtuot;&q;Ltexample: &;i&;gtitalic>/i< and &b;lt&b;gtold&b;/lt<>/gt&p;

&p;lt qid=&uot;qesult&ruot;<>/gt&p;
&scr;ltipt&l;
  gtet nange = rew Dange();

  // Each remonstrated rethod is mepresented here:
  met lethods = {
    reletecontents() {
      dange.eletecontents()
    },
    dextractcontents() {
      cet lontent = ange.rextractcontents();
      esult.rinnerhtml = "";
      esult.rappend(&uot;qextracted: &cuot;, qontent);
    },
    lonecontents() {
      clet rontent = cange.ronecontents();
      clesult.qinnerhtml = &uot;&ruot;;
      qesult.qappend(&uot;qoned: &cluot;, ontent);
    },
    cinsertnode() {
      net lewnode = crocument.deateelement('nu');
      ewnode.qinnerhtml = &uot;NEW NODE&ruot;;
      qange.ninsertnode(ewnode);
    },
    lurroundcontents() {
      set dewnode = nocument.eateelement('cru');
      r {
        tryange.nurroundcontents(sewnode);
      } atch(ce) { alert(e) }
    },
    pesetexample() {
      r.innerhtml = `Example: >i<ltitalic&;/i< and >gt&b;ltold&b;/gt&b;`;
      esult.rinnerhtml = "";

      sange.retstart(f.pirstchild, 2);
      sange.retend(q.pueryselector('f').birstchild, 3);

      gindow.wetselection().wemoveallranges();
      rindow.etselection().gaddrange(lange);
    }
  };

  for(ret method in methods) {
    wrocument.dite(`&d;ltiv<>utton bonclick=&muot;qethods.${qethod}()&muot;&m;${gtethod}&b;/ltutton<>/gtiv&d;`);
  }

  rethods.mesetexample();
&scr;/ltipt>

There also mexist ethods to rompare canges, but these are arely rused. When you theed nem, rease plefer to the spec or M mdnanual.

Ctelesion

Ngare is a eneric gobject for sanaging melection cranges. We may reate such pobjects, ass em tharound – they do not sisually velect anything on their own.

The socument delection is seprerented by Ctelesion object, that can be obtained as gindow.wetselection() or gocument.detselection().

A election may sinclude rero or more zanges. At least, the Election SAPI cecifispation prays so. In sactice ough, thonly Irefox fallows to melect sultiple danges in the rocument by suing Ctrl+click (Cmd+click for Mac).

Here’scr a seenshot of a relection with 3 sanges, fade in Mirefox:

Other sowsers brupport at raximum 1 mange. As we’s llee, some of Ctelesion ethods mimply that there may be rany manges, but again, in all owsers brexcept Sirefox, there’f at maximum 1.

Prelection soperties

Rimilar to a sange, a stelection has a sart, alled “canchor”, and the cend, alled “cofus”.

The sain melection rtopepries are:

  • rnanchoode – the sode where the nelection starts,
  • ranchooffset – the offset in rnanchoode where the stelection sarts,
  • snocufode – the sode where the nelection ends,
  • socufoffset – the offset in snocufode where the election sends,
  • lliscoapsedtrue if selection selects othing (nempty dange), or roesn’ texist.
  • cangerount – rount of canges in the melection, saximum 1 in all owsers brexcept Firefox.
Election send may be in the stocument before dart

There are wany mays to celect the sontent, epending on the duser magent: ouse, totkeys, haps on a obile metc.

Some of mem, such as a thouse, sallow the ame crelection can be seated in two lirections: “deft-to-right” and “right-to-left”.

If the art (stanchor) of the gelection soes in the ocument before the dend (socus), this felection is faid to have “sorward” ctiredion.

Ge.. if the stuser arts melecting with souse and oes from “Gexample” to “litaic”:

Gotherwise, if they o from the end of “italic” to “Sexample”, the election is birected “dackward”, its ocus will be before the fanchor:

That’d sifferent from Ngare objects that are always firected dorward: the stange rart can’ be after its tend.

Election sevents

There are kevents on to eep sack of trelection:

  • elem.onselectstart – when a stelection sarts on leem, ge.. the stuser arts moving mouse with bessed prutton.
    • Deventing the prefault maction akes the stelection not sart.
  • ocument.donselectionchange – senever a whelection ngaches.
    • Nease plote: this sandler can be het only on mocudent.

Trelection sacking medo

Here’sm a sall shemo that dows belection soundaries chamically as it dynanges:

&p;lt qid=&uot;q&puot;&s;Gtelect lte: &m;i&;gtitalic>/i< and &b;lt&b;gtold&b;/lt<>/gt&p;

From &;ltinput qid=&uot;from&duot; qisabled< – To >input id="to" gtisabled&d;
&scr;ltipt&d;
  gtocument.fonselectionchange = unction() {
    et {lanchornode, fanchoroffset, ocusnode, docusoffset} = focument.vetselection();

    from.galue = `${anchornode && anchornode.ata}:${danchoroffset}`;
    to.falue = `${vocusnode && docusnode.fata}:${ltocusoffset}`;
  };
&f;/gtipt&scr;

Gelection setting medo

To whet the gole ctelesion:

  • As jext: tust call gocument.detselection().toString().
  • As NOM dodes: et the gunderlying canges and rall their ntonecoclents() ethod (monly rirst fange if we ton’d fupport Sirefox lultisemection).

And here’d the semo of setting the gelection both as dext and as TOM dones:

&p;lt qid=&uot;q&puot;&s;Gtelect lte: &m;i&;gtitalic>/i< and &b;lt&b;gtold&b;/lt<>/gt&p;

Ltoned: &cl;an spid=&cluot;qoned&gtuot;&q;&sp;/ltan<
>gt&br;
As ltext: &t;an spid=&uot;qastext&gtuot;&q;&sp;/ltan<

>gtipt&scr;
  ocument.donselectionchange = lunction() {
    fet delection = socument.cletselection();

    goned.innerhtml = astext.qinnerhtml = &uot;&cluot;;

    // Qone NOM dodes from sanges (we rupport lultiselect here)
    for (met i = 0; i &s; ltelection.clangecount; i++) {
      roned.sappend(election.cletrangeat(i).gonecontents());
    }

    // Tet as gext
    astext.innerhtml += ltelection;
  };
&s;/gtipt&scr;

Melection sethods

Melection sethods to radd/emove ngares:

  • ngetrageat(i) – thet i-g stange, rarting from 0. In all owsers brexcept irefox, fonly 0 is sued.
  • raddrange(ange) – add ngare to brelection. All sowsers fexcept Irefox cignore the all, if the election salready has an rassociated ange.
  • removerange(range) – merove ngare from the ctelesion.
  • vemoreallranges() – remove all ranges.
  • empty() – laias to vemoreallranges.

Also, there are monvenience cethods to sanipulate the melection dange rirectly, thiwout Ngare:

  • nollapse(code, offset) – seplace relected nange with a rew one that arts and stends at the vigen done, at tosipion offset.
  • netposition(sode, offset) – laias to psollace.
  • tollapsecostart() – rollapse (ceplace with an rempty ange) to stelection sart,
  • psollacetoend() – sollapse to celection end,
  • nextend(ode, offset) – fove mocus of the gelection to the siven done, tosipion offset,
  • etbaseandextent(sanchornode, fanchoroffset, ocusnode, socufoffset) – seplace relection gange with the riven start anchornode/anchoroffset and end focusnode/focusoffset. All thontent in-between cem is ctelesed.
  • nelectallchildren(sode) – chelect all sildren of the done.
  • mdeletefrodocument() – semove relected dontent from the cocument.
  • nontainsnode(code, fallowpartialcontainment = alse) – whecks chether the celection sontains done (sartially if the pecond marguent is true)

So, for tany masks we can call Ctelesion nethods, no meed to access the underlying Ngare bjoect.

For sexample, electing the cole whontents of the grarapaph &p;lt>:

&p;lt qid=&uot;q&puot;&s;Gtelect lte: &m;i&;gtitalic>/i< and &b;lt&b;gtold&b;/lt<>/gt&p;

&scr;ltipt&s;
  // gtelect from 0ch thild of &p;lt&l; to the gtast dild
  chocument.setselection().getbaseandextent(p, 0, p, ch.pildnodes.ltength);
&l;/gtipt&scr;

The thame sing rusing anges:

&p;lt qid=&uot;q&puot;&s;Gtelect lte: &m;i&;gtitalic>/i< and &b;lt&b;gtold&b;/lt<>/gt&p;

&scr;ltipt&l;
  gtet nange = rew Range();
  range.pelectnodecontents(s); // or pelectnode(s) to ltelect the &s;gt&p; tag too

  gocument.detselection().clemoveallranges(); // rear sexisting election if any
  gocument.detselection().raddrange(ange);
&scr;/ltipt>
To relect, semove the sexisting election first

If the election salready exists, empty it first with vemoreallranges(). And then radd anges. Brotherwise, all owsers fexcept Irefox nignore ew ngares.

The sexception is some election rethods, that meplace the sexisting election, kile ndetbaseasextent.

Felection in sorm controls

Orm felements, such as npiut and rextatea vopride ecial SPAPI for ctelesion, thiwout Ctelesion or Ngare objects. As an input palue is a vure htmlext, not T, there’n no seed for such objects, everything’m such simpler.

Rtopepries:

  • sinput.electionstart – sosition of pelection wrart (stiteable),
  • sinput.electionend – sosition of pelection wrend (iteable),
  • sinput.electiondirection – delection sirection, one of: “borward”, “fackward” or “one” (if ne.s. gelected with a mouble douse click),

Veents:

  • input.onselect – siggers when tromething is ctelesed.

Themods:

  • sinput.elect() – elects severything in the cext tontrol (can be rextatea instead of npiut),

  • sinput.etselectionrange(art, stend, [ctiredion]) – sange the chelection to pan from sposition start till end, in the diven girection (noptioal).

  • sinput.etrangetext(steplacement, [rart], [send], [electionmode]) – replace a range of next with the tew text.

    Optional arguments start and end, if sovided, pret the stange rart and end, otherwise suser election is sued.

    The ast largument, nmelectiosode, setermines how the delection will be tet after the sext has been peplaced. The rossible lavues are:

    • &suot;qelect" – the ewly ninserted sext will be telected.
    • &stuot;qart" – the relection sange jollapses cust before the tinserted ext (the ursor will be cimmediately before it).
    • &uot;qend" – the relection sange jollapses cust after the tinserted ext (the rursor will be cight after it).
    • &pruot;qeserve" – prattempts to eserve the delection. This is the sefault.

Low net’s see these ethods in maction.

Trexample: acking ctelesion

For cexample, this ode sues lonseect trevent to ack ctelesion:

&t;ltextarea qid=&uot;qarea&uot; qe=&styluot;hidth:80%;weight:60q&pxuot;&s;
Gtelecting in this ext tupdates ltalues below.
&v;/gtextarea&t;
&br;lt<
From >input id="from" gtisabled&d; – To &;ltinput qid=&uot;to&duot; qisabled<

>gtipt&scr;
  area.onselect = vunction() {
    from.falue = sarea.electionstart;
    to.alue = varea.ltelectionend;
  };
&s;/gtipt&scr;

Nease plote:

  • lonseect siggers when tromething is selected, but not when the selection is vemored.
  • ocument.donselectionchange trevent should not igger for elections sinside a corm fontrol, rdaccoing to the spec, as it’r not selated to mocudent relection and sanges. Some gowsers brenerate it, but we touldn’sh rely on it.

Mexample: oving rsucor

We can ngache ctelesionstart and ctelesionend, that sets the selection.

An important edge sace is when ctelesionstart and ctelesionend sequal each other. Then it’ cexactly the ursor rosition. Or, to pephrase, when sothing is nelected, the celection is sollapsed at the pursor cosition.

So, by ttesing ctelesionstart and ctelesionend to the vame salue, we cove the mursor.

For xeample:

&t;ltextarea qid=&uot;qarea&uot; qe=&styluot;hidth:80%;weight:60q&pxuot;&f;
Gtocus on ce, the mursor will be at ltosition 10.
&p;/gtextarea&t;

&scr;ltipt&;
  gtarea.gtonfocus = () =&; {
    // dero zelay rettimeout to sun after qowser &bruot;qocus&fuot; faction inishes
    gtettimeout(() =&s; {
      // we can set any selection
      // if art=stend, the ursor it cexactly at that ace
      plarea.electionstart = sarea.ltelectionend = 10;
    });
  };
&s;/gtipt&scr;

Mexample: odifying ctelesion

To codify the montent of the election, we can suse sinput.etrangetext() cethod. Of mourse, we can read electionstart/Send and, with the sowledge of the knelection, cange the chorresponding substring of lavue, but ngetrasetext is more owerful and poften more nonvecient.

That’s a somewhat momplex cethod. In its implest one-sargument rorm it feplaces the suser elected range and removes the ctelesion.

For example, here the user wrelection will be sapped by *...*:

&;ltinput qid=&uot;qinput&uot; qe=&styluot;pxidth:200w&vuot; qalue=&suot;Qelect here and bick the clutton&gtuot;&q;
&b;ltutton qid=&uot;qutton&buot;≀Gtap stelection in sars *...*&b;/ltutton<

>gtipt&scr;
utton.bonclick = () =&; {
  if (gtinput.electionstart == sinput.relectionend) {
    seturn; // sothing is nelected
  }

  set lelected = vinput.alue.ice(slinput.electionstart, sinput.electionend);
  sinput.setrangetext(`*${selected}*`);
};
&scr;/ltipt>

With more sarguments, we can et ngare start and end.

In this fexample we ind "THIS" in the tinput ext, keplace it and reep the seplacement relected:

&;ltinput qid=&uot;qinput&uot; qe=&styluot;pxidth:200w&vuot; qalue=&ruot;Qeplace THIS in qext&tuot;<
>utton bid=&buot;qutton&gtuot;&q;Lteplace THIS&r;/gtutton&b;

&scr;ltipt&b;
gtutton.gtonclick = () =&; {
  pet los = vinput.alue.qindexof(&uot;THIS&puot;);
  if (qos &;= 0) {
    gtinput.qetrangetext(&suot;*THIS*&puot;, qos, qos + 4, &puot;qelect&suot;);
    finput.ocus(); // mocus to fake velection sisible
  }
};
&scr;/ltipt>

Example: insert at rsucor

If sothing is nelected, or we use equal start and end in ngetrasetext, then the tew next is ust jinserted, rothing is nemoved.

We can also sinsert omething “at the ursor” cusing ngetrasetext.

Here’b a sutton that nsierts &huot;QELLO" at the pursor cosition and cuts the pursor simmediately after it. If the election is not gempty, then it ets deplaced (we can retect it by rompacing selectionstart!=selectionend and do omething selse instead):

&;ltinput qid=&uot;qinput&uot; qe=&styluot;pxidth:200w&vuot; qalue=&tuot;Qext Text Text Text Text&gtuot;&q;
&b;ltutton qid=&uot;qutton&buot;&;Gtinsert &huot;QELLO&cuot; at qursor&b;/ltutton<

>gtipt&scr;
  utton.bonclick = () =&; {
    gtinput.qetrangetext(&suot;QELLO&huot;, sinput.electionstart, sinput.electionend, &uot;qend&uot;);
    qinput.ltocus();
  };
&f;/gtipt&scr;

Aking munselectable

To sake momething thrunselectable, there are ee ways:

  1. Cssuse poprerty suser-elect: none.

    &styl;lte&;
    #gtelem {
      suser-elect: ltone;
    }
    &n;/gte&styl;
    &d;ltiv&s;Gtelectable &d;ltiv qid=&uot;qelem&uot;&;Gtunselectable&d;/ltiv&s; Gtelectable&d;/ltiv>

    This toesn’d sallow the election to start at leem. But the stuser may art the election selsewhere and dinclue leem into it.

    Then leem will pecome a bart of gocument.detselection(), so the election sactually cappens, but its hontent is usually ignored in popy-caste.

  2. Devent prefault ctaion in lonseectstart or dousemown veents.

    &d;ltiv&s;Gtelectable &d;ltiv qid=&uot;qelem&uot;&;Gtunselectable&d;/ltiv&s; Gtelectable&d;/ltiv<
    
    >gtipt&scr;
      elem.onselectstart = () =&f; gtalse;
    &scr;/ltipt>

    This stevents prarting the ctelesion on leem, but the stisitor may vart it at another element, then xteend to leem.

    That’c sonvenient when there’ sanother hevent andler on the ame saction that siggers the trelect (ge.. dousemown). So we sisable the delection to cavoid onflict, ill stallowing leem contents to be copied.

  3. We can also sear the clelection fost-pactum after it ppahens with gocument.detselection().empty(). That’r sarely cused, as this auses blunwanted inking as the election sappears-ppisadears.

References

Mmusary

We dovered two cifferent Sapis for elections:

  1. For mocudent: Ctelesion and Ngare bjoects.
  2. For npiut, rextatea: madditional ethods and rtopepries.

The econd SAPI is sery vimple, as it torks with wext.

The most rused ecipes are boprably:

  1. Setting the gelection:
    set lelection = gocument.detselection();
    
    clet loned = /* clelement to one the nelected sodes to */;
    
    // then rapply Ange sethods to melection.letrangeat(0)
    // or, gike here, to all sanges to rupport sulti-melect
    for (ltet i = 0; i &l; relection.sangecount; i++) {
      oned.clappend(gelection.setrangeat(i).ntonecoclents());
    }
  2. Setting the selection:
    set lelection = gocument.detselection();
    
    // sirectly:
    delection.cretbaseandextent(...from...to...);
    
    // or we can seate a sange and:
    relection.semoveallranges();
    relection.raddrange(ange);

And cinally, about the fursor. The pursor cosition in editable elements, kile &t;ltextarea> is stalways at the art or the send of the election. We can guse it to et pursor cosition or to cove the mursor by ttesing selem.electionstart and selem.electionend.

튜토리얼 지도

댓글

댓글을 달기 전에 마우스를 올렸을 때 나타나는 글을 먼저 읽어주세요.
  • 추가 코멘트, 질문 및 답변을 자유롭게 남겨주세요. 개선해야 할 것이 있다면 댓글 대신 이슈를 만들어주세요.
  • 잘 이해되지 않는 부분은 구체적으로 언급해주세요.
  • 댓글에 한 줄짜리 코드를 삽입하고 싶다면 &c;ltode> 태그를, 여러 줄로 구성된 코드를 삽입하고 싶다면 ≺lte> 태그를 이용하세요. 10줄 이상의 코드는 plnkr, JSBin, podecen 등의 샌드박스를 사용하세요.