XML DOM - Range 对象
Range 对象表示文档中的连续范围。
Range 对象
Range 对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域。
如果一个实现支持 Range 模块,那么 Document 对象就定义了 createRange() 方法,调用它可创建新的 Range 对象。
ຫົວຂໍ້ໃຫ້ຫາຄວາມຫນັງ:IE 定义了不兼容的 Document.createRange() 方法,它返回的对象与 Rang 接口相似,但不兼容。
ເຄື່ອງໝູ່ Range ຈະກຳນວຍການການກັນກັບຫົວຂໍ້ 'ເລືອກ' ຂອງໂດຍສານຫົວຂໍ້ທີ່ມີຫຼາຍກົນລະຍຸດ, ນອກຈາກນັ້ນຍັງມີກົນລະຍຸດທີ່ຈະການກັບຫົວຂໍ້ໃນກອບກວ້າງທີ່ເລືອກ.
ຜົນປະກອບຂອງເຄື່ອງໝູ່ Range ຈະສະໜອງກົນລະຍຸດທີ່ຈະຮັບມາປະຕູບັງຄັບແລະການກະຕຸ້ມຂອງກອບກວ້າງ. ກົນລະຍຸດທີ່ຈະກຳນວຍການການກັນກັບກອບກວ້າງຈະສະໜອງກົນລະຍຸດທີ່ຈະການກັນກັບປະຕູບັງຄັບ. ເຫັນວ່າກອບກວ້າງຈະການກັນກັບ Document ຫຼື ເລັກອອກ DocumentFragmentຂອງຫົວຂໍ້. ເມື່ອກຳນວຍການກອບກວ້າງຂອງປະຕູບັງຄັບຂອງກອບກວ້າງຈະຖືກກຳນວຍການ, ພວກເຮົາສາມາດໃຊ້ກົນລະຍຸດ deleteContents(), extractContents(), cloneContents(), ແລະ insertNode() ເພື່ອການກະຈາຍ, ການສໍາເນົາ, ແລະ ການກະຈາຍຫົວຂໍ້.
ເມື່ອໄດ້ປ່ຽນແປງໂດຍການເພີ່ມເພີກຫຼືຫຼຸດຫຼຸດຂອງໂດຍສານຫົວຂໍ້, ບັນດາເລັກອອກຂອງກອບກວ້າງທີ່ອະທິບາຍສ່ວນບາງຂອງໂດຍສານຫົວຂໍ້ຈະປ່ຽນແປງ (ຖ້າຈະຈຳເປັນ), ເພື່ອຮັກສາປະຕູບັງຄັບຂອງພວກມັນຢູ່ເປັນທີ່ມີຜົນງານ, ແລະຮັກສາຫົວຂໍ້ທີ່ຈະສະແດງຫົວຂໍ້ຂອງໂດຍສານຫົວຂໍ້ນັ້ນໃຫ້ໃກ້ຄຽງຫຼາຍທີ່ຈະສະແດງຫົວຂໍ້ຂອງໂດຍສານຫົວຂໍ້.
ສັບພາສາ: ກອບກວ້າງ, ປະຕູບັງຄັບ, ແລະການກະຕຸ້ມ
ກອບກວ້າງມີສອງປະຕູບັງຄັບທີ່ຈະກຳນວຍການສະແດງຫົວຂໍ້ທີ່ເລີ່ມມາແລະຈົບມາຂອງກອບກວ້າງ. ປະຕູບັງຄັບແມ່ນຫົວຂໍ້ແລະການກະຕຸ້ມທີ່ຈະກຳນວຍການສະແດງຫົວຂໍ້ນັ້ນ. ຫົວຂໍ້ຈະຈະເປັນ ຫົວຂໍ້ Element、ຫົວຂໍ້ Documentຫຼື ຫົວຂໍ້ Textສຳລັບຫົວຂໍ້ Element ແລະຫົວຂໍ້ Document,ການກະຕຸ້ມແມ່ນອ້າງຫົວຂໍ້ລູກຂອງຫົວຂໍ້ນັ້ນ。ການກະຕຸ້ມທີ່ 0 ສະແດງວ່າປະຕູບັງຄັບຢູ່ກ່ອນຫົວຂໍ້ລູກທໍາອິດຂອງຫົວຂໍ້ນັ້ນ。ການກະຕຸ້ມທີ່ 1 ສະແດງວ່າປະຕູບັງຄັບຢູ່ຫຼັງຫົວຂໍ້ລູກທໍາອິດຂອງຫົວຂໍ້ນັ້ນແລະກ່ອນຫົວຂໍ້ລູກທີສອງຂອງຫົວຂໍ້ນັ້ນ。ແຕ່ຖ້າປະຕູບັງຄັບແມ່ນຫົວຂໍ້ Text,ການກະຕຸ້ມຈະອ້າງຫົວຂໍ້ຂອງຈຳນວນສອງຄຳໃນຂະນະຄັດເລີຍ。
Range 对象的常量
这些常量指定了如何比较 Range 对象的边界点。
它们是 compareBoundaryPoints() 方法的 how 参数的合法值:
常量 | ອະທິບາຍ |
---|---|
START_TO_START | 用指定范围的开始点与当前范围的开始点进行比较。 |
START_TO_END | 用指定范围的开始点与当前范围的结束点进行比较。 |
END_TO_END | 用指定范围的结束点与当前范围的结束点进行比较。 |
END_TO_START | 用指定范围的结束点与当前范围的开始点进行比较。 |
ປະສົງວິທີການ RangeDocumentFragment
ຫົວຂໍ້ໃຫ້ຫາຄວາມຫນັງ:ທຸກປະສົງແມ່ນພຽງແຕ່ອ່ານ, ບໍ່ສາມາດປ່ຽນຈຸດເລີ່ມຢູ່ ແລະ ຈຸດຢູ່ຂອງ RangeDocumentFragment ຜ່ານການປ່ຽນປະສົງ, ຕ້ອງໄດ້ເອິ້ນວິທີການ setEnd() ແລະ setStart() ເພື່ອປ່ຽນມັນ.
ຫົວຂໍ້ໃຫ້ຫາຄວາມຫນັງ:ຖ້າມີການເອິ້ນວິທີການ detach(), ການອ່ານປະສົງຂອງທຸກປະສົງຈະສາຍຕະລາຍຄຳສັ່ງ INVALID_STATE_ERR. DOMException 异常。
ປະສົງ | ອະທິບາຍ |
---|---|
collapsed | ຖ້າຈຸດເລີ່ມຢູ່ ແລະ ຈຸດຢູ່ຢູ່ໃນຕອນເລິກຂອງໂດຍການສະແດງດຽວກັນໃນໂດຍການສະແດງດຽວກັນ, ຄວາມຈິງວ່າ RangeDocumentFragment ທີ່ວັດຈຳນວນຫລຸດຫລຸດ, ຫລື collapse. |
commonAncestorContainer | ຈຸດເລີ່ມຢູ່ ແລະ ຈຸດຢູ່ຂອງ RangeDocumentFragment (ພວກເຂົາແມ່ນຫົວຂໍ້ພັນທຸກຄວາມສົມບູນສະໜາມຂອງ Document ພັນທຸກຄວາມສົມບູນຂອງຫົວຂໍ້ພັນ). |
endContainer | Document ຂອງຫົວຂໍ້ທີ່ບັນຈຸມີຈຸດຢູ່. |
endOffset | ຕອນເບື້ອງຢູ່ endContainer. |
startContainer | Document ຂອງຫົວຂໍ້ທີ່ບັນຈຸມີຈຸດເລີ່ມຢູ່. |
startOffset | ຕອນເບື້ອງຂອງຈຸດເລີ່ມຢູ່ startContainer. |
ວິທີການຂອງ RangeDocumentFragment
ຫົວຂໍ້ໃຫ້ຫາຄວາມຫນັງ:ຖ້າມີການເອິ້ນວິທີການ detach() ຂອງ Range ວິທີການໃນຫລັງຈາກນັ້ນຂອງ RangeDocumentFragment ຈະສາຍຕະລາຍຄຳສັ່ງ INVALID_STATE_ERR. DOMException 异常。
ວິທີການ | ອະທິບາຍ |
---|---|
cloneContents() | ບອກມາ RangeDocumentFragment ອານຸສາວະພາບທີ່ບັນຈຸມີຄວາມຄິດຂອງຂອງ RangeDocumentFragment. |
cloneRange() | ສ້າງ Range ອານຸສາວະພາບອັນໂຕລະນາວະການສະແດງສະໝອງດຽວກັບ Range ອານຸສາວະພາບດຽວກັນ. |
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() | 返回该范围表示的文档区域的纯文本内容。 |