XML DOM - Object na Range
Ang object na Range ay naglalaman ng tuloy-tuloy na saklaw sa dokumento.
Object na Range
Ang object na Range ay naglalaman ng tuloy-tuloy na saklaw ng dokumento, tulad ng saklaw na ayon sa pagpili ng user sa window ng browser gamit ang mouse.
Kung ang isang implementasyon ay sumusuporta sa module ng Range, pagkatapos Object ng Documentay tinukoy Paraan na createRange(),panglikha ng bagong object na Range.
Babala:IE ay nagbigay ng hindi pinagsama-sama na Document.createRange() na paraan, ang object na ito ay katulad ng interface ng Range, ngunit hindi pinagsama-sama.
Ang interface ng Range ay nagbibigay ng maraming paraan upang tukuyin ang saklaw ng dokumento na ayon sa pagpili, at may ilang mga paraan na maaaring gamitin upang gumawa ng operasyon ng pagkakatayin at pagglue sa saklaw na ayon sa pagpili.
Ang mga atributo ng interface ng Range ay nagbibigay ng mga paraan upang kumuha ng hangganan ng saklaw at offset. Ang mga paraan nito ay nagbibigay ng mga paraan upang itatagpuan ang hangganan ng saklaw. Babalikan, ang hangganan ng saklaw ay maaaring itatagpuan bilang Document o Object ng DocumentFragmentna may mga node. Kapag tinukoy na ang hangganan ng saklaw, maaaring gamitin ang mga paraan na deleteContents(), extractContents(), cloneContents() at insertNode() upang gumawa ng operasyon ng pagkakatayin, pagkopya at pagglue.
Kapag nagbago ang dokumento sa pamamagitan ng pagdagdag o pag-alis ng operasyon, ang lahat ng mga Range na object na naglalaman ng isang bahagi ng dokumento ay magiging bagong pagbabago (kung kinakailangan) upang mapanatili ang kanilang hangganan ng punto na maging epektibo, at upang mapanatili sila (sa pinakamalapit na) na naglalaman ng parehong nilalaman ng dokumento.
Terminong: saklaw, hangganan ng punto at offset
Ang isang saklaw ay may dalawang hangganan ng punto, ibig sabihin, isang punto ng pagsisimula at isang punto ng pagtatapos. Bawat hangganan ng punto ay tinukoy ng isang node at ang offset ng iyon na node. Ang node na ito ay karaniwang Element na node、Document na nodeo Text na nodePara sa Element at Document na node, ang offset ay tumutukoy sa mga anak na node ng node. Kapag ang offset ay 0, ibig sabihin na ang hangganan ng punto ay nasa unang anak na node ng node. Kapag ang offset ay 1, ibig sabihin na ang hangganan ng punto ay nasa unang anak na node ng node, bago ang ikalawang anak na node. Gayunpaman, kapag ang hangganan ng node ay Text na node, ang offset ay tumutukoy sa posisyon sa pagitan ng dalawang character ng teksto.
Mga kongstante ng Range object
Ang mga kongstante na ito ay nagsasagawa kung paano ihahambing ang boundary points ng Range object.
Ito ay parameter ng compareBoundaryPoints() method how Legal na halaga ng parameter:
Mga kongstante | Paglalarawan |
---|---|
START_TO_START | Ihahambing ang simula ng tinukoy na range sa simula ng kasalukuyang range. |
START_TO_END | Ihahambing ang simula ng tinukoy na range sa katapusan ng kasalukuyang range. |
END_TO_END | Ihahambing ang katapusan ng tinukoy na range sa katapusan ng kasalukuyang range. |
END_TO_START | Ihahambing ang katapusan ng tinukoy na range sa simula ng kasalukuyang range. |
Mga atributo ng Range object
Babala:Lahat ng atributo ay read-only, hindi mo maaaring baguhin ang simula at katapusan ng range sa pamamagitan ng pag-set ng mga atributo, kailangan mong tumawag sa setEnd() at setStart() method para sa bagay na ito.
Babala:Ang anumang pagbabasa sa mga atributo pagkatapos ng pagtawag sa detach() method ay magbibigay ng error code na INVALID_STATE_ERR DOMException 异常。
Atributo | Paglalarawan |
---|---|
collapsed | Kung ang simula at katapusan ng range ay nasa parehong lugar ng dokumento, ito ay true, ibig sabihin ang range ay walang laman, o nakakapalit. |
commonAncestorContainer | Ang pinakamalalaking Document node na nasa pinakamalalaking napapalibutan ng simula at katapusan ng range (kabilang ang kanilang magulang na node), ang pinakamalalaking nakalalagay na Document node. |
endContainer | Ang Document na node na naglalaman ng katapusan ng range |
endOffset | Ang posisyon ng katapusan sa endContainer |
startContainer | Ang Document na node na naglalaman ng simula ng range |
startOffset | Ang posisyon ng simula sa startContainer |
Mga method ng Range object
Babala:Kung tinawagan ang detach() method ng range, ang anumang pagtawag sa anumang method ng Range object ay magbibigay ng error code na INVALID_STATE_ERR DOMException 异常。
Mga paraan | Paglalarawan |
---|---|
cloneContents() | Binabalik ang bagong DocumentFragment object na naglalaman ng kopya ng dokumentong lugar na inaasahan ng range. |
cloneRange() | Tumuknang isang bagong Range object na naglalaman ng parehong dokumentong lugar kasama ang kasalukuyang Range object. |
collapse() | 折叠该范围,使它的边界点重合。 |
compareBoundaryPoints() | 比较指定范围的边界点和当前范围的边界点,根据它们的顺序返回 -1、0 和 1。比较哪个边界点由它的第一个参数指定,它的值必须是前面定义的常量之一。 |
deleteContents() | 删除当前 Range 对象表示的文档区域。 |
detach() | 通知实现不再使用当前的范围,可以停止跟踪。如果调用了范围的这个方法,那么接下来调用的该范围任何方法都会抛出代码为 INVALID_STATE_ERR 的 DOMException 异常。 |
extractContents() | 删除当前范围表示的文档区域,并且以 DocumentFragment 对象的形式返回那个区域的内容。该方法和 cloneContents() 方法与 deleteContents() 方法的组合很相似。 |
insertNode() | 把指定的节点插入文档范围的开始点。 |
selectNode() | 设置该范围的边界点,使它包含指定的节点和它的所有子孙节点。 |
selectNodeContents() | 设置该范围的边界点,使它包含指定节点的子孙节点,但不包含指定的节点本身。 |
setEnd() | 把该范围的结束点设置为指定的节点和偏移量。 |
setEndAfter() | 把该范围的结束点设置为紧邻指定节点的节点之后。 |
setEndBefore() | 把该范围的结束点设置为紧邻指定节点之前。 |
setStart() | 把该范围的开始点设置为指定的节点中的指定偏移量。 |
setStartAfter() | 把该范围的开始点设置为紧邻指定节点的节点之后。 |
setStartBefore() | 把该范围的开始点设置为紧邻指定节点之前。 |
surroundContents() | 把指定的节点插入文档范围的开始点,然后重定范围中的所有节点的父节点,使它们成为新插入的节点的子孙节点。 |
toString() | 返回该范围表示的文档区域的纯文本内容。 |