XML DOM - Range ¶ÔÏó
Range ¶ÔÏó±íʾÎĵµÖеÄÁ¬Ðø·¶Î§¡£
Range ¶ÔÏó
Range ¶ÔÏó±íʾÎĵµµÄÁ¬Ðø·¶Î§ÇøÓò£¬ÈçÓû§ÔÚä¯ÀÀÆ÷´°¿ÚÖÐÓÃÊó±êÍ϶¯Ñ¡ÖеÄÇøÓò¡£
Èç¹ûÒ»¸öʵÏÖÖ§³Ö Range Ä£¿é£¬ÄÇô Document ¶ÔÏó¾Í¶¨ÒåÁË createRange() ·½·¨£¬µ÷ÓÃËü¿É´´½¨Ð嵀 Range ¶ÔÏó¡£
×¢Ò⣺IE ¶¨ÒåÁ˲»¼æÈÝµÄ Document.createRange() ·½·¨£¬Ëü·µ»ØµÄ¶ÔÏóÓë Rang ½Ó¿ÚÏàËÆ£¬µ«²»¼æÈÝ¡£
Range ½Ó¿ÚΪָ¶¨Îĵµ¡°Ñ¡ÖС±µÄÇøÓò¶¨ÒåÁË´óÁ¿µÄ·½·¨£¬´ËÍ⻹Óм¸¸ö·½·¨¿ÉÒÔÓÃÓÚÔÚÑ¡ÖеÄÇøÓòÖнøÐмôÇкÍÕ³ÌùÀàÐ͵IJÙ×÷¡£
Range ½Ó¿ÚµÄÊôÐÔÌṩÁË»ñÈ¡·¶Î§µÄ±ß½ç½ÚµãºÍÆ«ÒÆÁ¿µÄ·½·¨¡£ËüµÄ·½·¨ÌṩÁËÉèÖ÷¶Î§±ß½çµÄ·½·¨¡£×¢Ò⣬·¶Î§µÄ±ß½ç¿ÉÒÔÉèÖÃΪ Document »ò DocumentFragment ¶ÔÏóÖеĽڵ㡣һµ©¶¨ÒåÁË·¶Î§µÄ±ß½çµã£¬¾Í¿ÉÒÔʹÓà deleteContents()¡¢extractContents()¡¢cloneContents() ºÍ insertNode() ·½·¨ÊµÏÖ¼ôÇС¢¸´ÖƺÍÕ³ÌùµÄ²Ù×÷¡£
µ±Í¨¹ý²åÈë»òɾ³ý²Ù×÷¸Ä±äÁËÎĵµÊ±£¬±íʾÎĵµÒ»²¿·ÖµÄËùÓÐ Range ¶ÔÏó¶¼½«¸Ä±ä£¨Èç¹û±ØÒªµÄ»°£©£¬ÒÔ±ãʹËüÃǵı߽çµã±£³ÖÓÐЧ£¬²¢ÇÒÈÃËüÃÇ£¨¾¡¿ÉÄܽӽüµØ£©±íʾͬÑùµÄÎĵµÄÚÈÝ¡£
ÊõÓ·¶Î§¡¢±ß½çµãºÍÆ«ÒÆÁ¿
Ò»¸ö·¶Î§¾ßÓÐÁ½¸ö±ß½çµã£¬¼´Ò»¸ö¿ªÊ¼µãºÍÒ»¸ö½áÊøµã¡£Ã¿¸ö±ß½çµãÓÉÒ»¸ö½ÚµãºÍÄǸö½ÚµãµÄÆ«ÒÆÁ¿Ö¸¶¨¡£¸Ã½Úµãͨ³£ÊÇ Element ½Úµã¡¢Document ½Úµã»ò Text ½Úµã¡£¶ÔÓÚ Element ½ÚµãºÍ Document ½Úµã£¬Æ«ÒÆÁ¿Ö¸¸Ã½ÚµãµÄ×Ó½Úµã¡£Æ«ÒÆÁ¿Îª 0£¬ËµÃ÷±ß½çµãλÓڸýڵãµÄµÚÒ»¸ö×Ó½Úµã֮ǰ¡£Æ«ÒÆÁ¿Îª 1£¬ËµÃ÷±ß½çµãλÓڸýڵãµÄµÚÒ»¸ö×Ó½ÚµãÖ®ºó£¬µÚ¶þ¸ö×Ó½Úµã֮ǰ¡£µ«Èç¹û±ß½ç½ÚµãÊÇ Text ½Úµã£¬Æ«ÒÆÁ¿ÔòÖ¸µÄÊÇÎı¾ÖÐÁ½¸ö×Ö·ûÖ®¼äµÄλÖá£
Range ¶ÔÏóµÄ³£Á¿
ÕâЩ³£Á¿Ö¸¶¨ÁËÈçºÎ±È½Ï Range ¶ÔÏóµÄ±ß½çµã¡£
ËüÃÇÊÇ compareBoundaryPoints() ·½·¨µÄ how ²ÎÊýµÄºÏ·¨Öµ£º
| ³£Á¿ | ÃèÊö |
|---|---|
| START_TO_START | ÓÃÖ¸¶¨·¶Î§µÄ¿ªÊ¼µãÓ뵱ǰ·¶Î§µÄ¿ªÊ¼µã½øÐбȽϡ£ |
| START_TO_END | ÓÃÖ¸¶¨·¶Î§µÄ¿ªÊ¼µãÓ뵱ǰ·¶Î§µÄ½áÊøµã½øÐбȽϡ£ |
| END_TO_END | ÓÃÖ¸¶¨·¶Î§µÄ½áÊøµãÓ뵱ǰ·¶Î§µÄ½áÊøµã½øÐбȽϡ£ |
| END_TO_START | ÓÃÖ¸¶¨·¶Î§µÄ½áÊøµãÓ뵱ǰ·¶Î§µÄ¿ªÊ¼µã½øÐбȽϡ£ |
Range ¶ÔÏóµÄÊôÐÔ
×¢Ò⣺ËùÓÐÊôÐÔ¶¼ÊÇÖ»¶ÁµÄ£¬²»ÄÜͨ¹ýÉèÖÃÕâЩÊôÐԸı䷶ΧµÄ¿ªÊ¼µãºÍ½áÊøµã£¬±ØÐëµ÷Óà setEnd() ·½·¨ºÍ setStart() ·½·¨ÊµÏÖÕâÒ»µã¡£
×¢Ò⣺µ÷Óà detach() ·½·¨ºó£¬¶ÔÕâЩÊôÐÔµÄÈκζÁ²Ù×÷¶¼»áÅ׳ö´úÂëΪ INVALID_STATE_ERR µÄ DOMException Òì³£¡£
| ÊôÐÔ | ÃèÊö |
|---|---|
| collapsed | Èç¹û·¶Î§µÄ¿ªÊ¼µãºÍ½áÊøµãÔÚÎĵµµÄͬһλÖã¬ÔòΪ true£¬¼´·¶Î§Êǿյ쬻òÕÛµþµÄ¡£ |
| commonAncestorContainer | ·¶Î§µÄ¿ªÊ¼µãºÍ½áÊøµãµÄ£¨¼´ËüÃǵÄ׿ÏȽڵ㣩¡¢Ç¶Ì××îÉîµÄ Document ½Úµã¡£ |
| endContainer | °üº¬·¶Î§µÄ½áÊøµãµÄ Document ½Úµã¡£ |
| endOffset | endContainer ÖеĽáÊøµãλÖᣠ|
| startContainer | °üº¬·¶Î§µÄ¿ªÊ¼µãµÄ Document ½Úµã¡£ |
| startOffset | startContainer ÖеĿªÊ¼µãλÖᣠ|
Range ¶ÔÏóµÄ·½·¨
×¢Ò⣺Èç¹ûµ÷ÓÃÁË·¶Î§µÄ detach() ·½·¨£¬ÄÇô½ÓÏÂÀ´µ÷Óà Range ¶ÔÏóµÄÈκη½·¨¶¼»áÅ׳ö´úÂëΪ INVALID_STATE_ERR µÄ DOMException Òì³£¡£
| ·½·¨ | ÃèÊö |
|---|---|
| cloneContents() | ·µ»ØÐ嵀 DocumentFragment ¶ÔÏó£¬Ëü°üº¬¸Ã·¶Î§±íʾµÄÎĵµÇøÓòµÄ¸±±¾¡£ |
| 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() | °ÑÖ¸¶¨µÄ½Úµã²åÈëÎĵµ·¶Î§µÄ¿ªÊ¼µã£¬È»ºóÖØ¶¨·¶Î§ÖеÄËùÓнڵãµÄ¸¸½Úµã£¬Ê¹ËüÃdzÉΪвåÈëµÄ½ÚµãµÄ×ÓËï½Úµã¡£ |
| toString() | ·µ»Ø¸Ã·¶Î§±íʾµÄÎĵµÇøÓòµÄ´¿Îı¾ÄÚÈÝ¡£ |