| | 463 | |
| | 464 | // If the object pointed to by the startOffset and endOffset are text nodes, we need |
| | 465 | // to backtrack and add in the text offset to the bookmark addresses. |
| | 466 | if ( addrStart.nodeType == 1 && addrStart.childNodes[bookmark.Start[0]].nodeType == 3 ) |
| | 467 | { |
| | 468 | var curNode = addrStart.childNodes[bookmark.Start[0]] ; |
| | 469 | var offset = 0 ; |
| | 470 | while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 ) |
| | 471 | { |
| | 472 | curNode = curNode.previousSibling ; |
| | 473 | offset += curNode.length ; |
| | 474 | } |
| | 475 | addrStart = curNode ; |
| | 476 | bookmark.Start[0] = offset ; |
| | 477 | } |
| | 478 | if ( addrEnd.nodeType == 1 && addrEnd.childNodes[bookmark.End[0]].nodeType == 3 ) |
| | 479 | { |
| | 480 | var curNode = addrEnd.childNodes[bookmark.End[0]] ; |
| | 481 | var offset = 0 ; |
| | 482 | while ( curNode.previousSibling && curNode.previousSibling.nodeType == 3 ) |
| | 483 | { |
| | 484 | curNode = curNode.previousSibling ; |
| | 485 | offset += curNode.length ; |
| | 486 | } |
| | 487 | addrEnd = curNode ; |
| | 488 | bookmark.End[0] = offset ; |
| | 489 | } |
| | 490 | |