XML DOM - αντικείμενο Range

Το αντικείμενο Range αντιπροσωπεύει μια συνεχής περιοχή του εγγράφου.

Το αντικείμενο Range

Το αντικείμενο Range αντιπροσωπεύει μια συνεχής περιοχή του εγγράφου, όπως η περιοχή που ο χρήστης επιλέγει με το ποντίκι στην παράθυρο του προγράμματος περιήγησης.

Αν μια υλοποίηση υποστηρίζει το μοジュλού Range, τότε Όνειρο Documentκαθορίζει Μεθόδος createRange(),τηλεφώνηση της μπορεί να δημιουργήσει νέο αντικείμενο Range.

Σημείωση:Το IE ορίζει μια μη συμβατή μέθοδο Document.createRange(), η οποία επιστρέφει αντικείμενα που είναι παρόμοια με το interface Range, αλλά μη συμβατικά.

Το Range interface καθορίζει πολλά μεθόδους για την καθορισμένη περιοχή του εγγράφου, επιπλέον还有一些方法可以用于在选中的区域中进行剪切和粘贴类型的操作。

Οι ιδιότητες του Range interface παρέχουν μεθόδους για την απόκτηση των όρων των κειμένων και των αποκλίσεων. Οι μεθόδοι του παρέχουν τρόπους για τη ρύθμιση των όρων της εμβέλειας. Σημειώστε ότι οι όροι της εμβέλειας μπορούν να ρυθμιστούν ως Document ή Όνειρο DocumentFragmentτων κελιών. Μόλις οριστεί το όριο των σημείων της εμβέλειας, μπορείτε να χρησιμοποιήσετε τις μεθόδους deleteContents(), extractContents(), cloneContents() και insertNode() για να επιτύχετε τις λειτουργίες κόπής, αντιγραφής και επικόλλησης.

Όταν αλλάζει το έγγραφο μέσω εισαγωγής ή διαγραφής λειτουργιών, όλα τα αντικείμενα Range που αντιπροσωπεύουν μέρος του εγγράφου θα αλλάξουν (αν είναι απαραίτητο), ώστε να διατηρηθούν τα όρια σημεία τους και να αντιπροσωπεύουν το ίδιο περιεχόμενο του εγγράφου (όσο το δυνατόν πιο κοντά).

Τερμινισμός: εμβέλεια, όριο σημείο και απόκλιση

Μια εμβέλεια έχει δύο όρια σημεία, δηλαδή έναν σημείο έναρξης και έναν σημείο λήξης. Κάθε όριο σημείο καθορίζεται από ένα κελί και την απόκλιση αυτού του κελιού. Το κελί είναι συνήθως Κείμενο ElementΚείμενο Documentή Κείμενο κελίΓια τα κελιά Element και Document, η απόκλιση υποδεικνύει το υποκείμενο κελί του κελιού. Η απόκλιση είναι 0, σημαίνει ότι ο όριο σημείο βρίσκεται πριν τον πρώτο υποκείμενο κελί του κελιού. Η απόκλιση είναι 1, σημαίνει ότι το όριο σημείο βρίσκεται μετά τον πρώτο υποκείμενο κελί του κελιού και πριν το δεύτερο υποκείμενο κελί. Αλλά αν το όριο κελί είναι κείμενο, η απόκλιση αναφέρεται στη θέση δύο χαρακτήρων στο κείμενο.

Σταθερά του αντικειμένου 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 Ο κόμβος του έγγραφου που περιέχει το σημείο λήξης της περιοχής.
endOffset Θέση του σημείου λήξης στο endContainer.
startContainer Ο κόμβος του έγγραφου που περιέχει το σημείο έναρξης της περιοχής.
startOffset Θέση του σημείου έναρξης στο startContainer.

Μέθοδοι του αντικειμένου Range

Σημείωση:Αν έχει καλέσει τη μέθοδο detach() της περιοχής, οποιαδήποτε μεθόδος της Range που καλείται μετά από αυτή θα προκαλέσει σφάλμα INVALID_STATE_ERR. DOMException απόκλιση.

Μέθοδος Περιγραφή
cloneContents() Επιστροφή νέου αντικειμένου DocumentFragment που περιέχει την αντιγραφή της περιοχής του έγγραφου που αντιπροσωπεύει η Range.
cloneRange() Δημιουργία νέου αντικειμένου Range που αντιπροσωπεύει την ίδια περιοχή του έγγραφου με την τρέχουσα Range.
collapse() Συγχωνεύει την περιοχή, ώστε τα όρια της να συμπίπτουν.
compareBoundaryPoints() Μεταβάλλει τα όρια της καθορισμένης περιοχής, επιστρέφοντας -1, 0 ή 1 ανάλογα με τη σειρά τους. Η σύγκριση των όρων γίνεται με τον πρώτο παράγοντα, ο οποίος πρέπει να είναι ένας από τους προκαθορισμένους μόνιμους.
deleteContents() Διαγράφει τον τομέα που αντιπροσωπεύει η περιοχή.
detach() Ειδοποιεί ότι η υλοποίηση δεν χρησιμοποιεί πλέον την τρέχουσα περιοχή και μπορεί να σταματήσει την παρακολούθηση. Αν καλέστηκε αυτή η μέθοδος της περιοχής, τότε κάθε άλλη μέθοδος που καλείται στη συνέχεια από την περιοχή θα προκαλέσει μια απόκλιση με κώδικα INVALID_STATE_ERR. DOMException απόκλιση.
extractContents() Διαγράφει τον τομέα που αντιπροσωπεύει η περιοχή και επιστρέφει το περιεχόμενο αυτού του τομέα ως αντικείμενο DocumentFragment. Αυτό το μέθοδο και η συνδυασμένη χρήση του με το cloneContents() και deleteContents() είναι παρόμοια.
insertNode() Εισάγει τον καθορισμένο κόμβο στην αρχή της περιοχής.
selectNode() Ρυθμίζει τα όρια της περιοχής ώστε να περιλαμβάνει τον καθορισμένο κόμβο και όλους τους απογόνους του.
selectNodeContents() Ρυθμίζει τα όρια της περιοχής ώστε να περιλαμβάνει τους απογόνους του καθορισμένου κόμβου, αλλά όχι τον κόμβο τον ίδιο.
setEnd() Ρυθμίζει την τελική άκρη της περιοχής σε ένα σημείο που καθορίζεται από τον καθορισμένο κόμβο και την απόσταση.
setEndAfter() Ρυθμίζει την τελική άκρη της περιοχής σε ένα σημείο που βρίσκεται μετά τον καθορισμένο κόμβο.
setEndBefore() Ρυθμίζει την τελική άκρη της περιοχής σε ένα σημείο που βρίσκεται προ του καθορισμένου κόμβου.
setStart() Ρυθμίζει την αρχή της περιοχής σε μια απόσταση που καθορίζεται από τον καθορισμένο κόμβο.
setStartAfter() Ρυθμίζει την αρχή της περιοχής σε ένα σημείο που βρίσκεται μετά τον καθορισμένο κόμβο.
setStartBefore() Ρυθμίζει την αρχή της περιοχής σε ένα σημείο που βρίσκεται προ του καθορισμένου κόμβου.
surroundContents() Εισάγει τον καθορισμένο κόμβο στην αρχή της περιοχής, και επαναπροσαρμόζει τους γονείς όλων των κόμβων στην περιοχή, ώστε να γίνουν απογόνους του νέου εισαχθέντος κόμβου.
toString() Επιστρέφει το απλό κείμενο του τομέα που αντιπροσωπεύει η περιοχή.