J'ai travaillé avec des objets de sélection/gamme, et parce que la quantité incroyable d'incohérences entre les navigateurs pour certains éléments de sélection/gamme (même plus que le DOM) je me demandais s'il y avait un cadre Cela m'aiderait à les traverser.Sélection de JavaScript/cadre de gamme
Répondre
(Fait une réponse à la demande;)
Jetez un oeil à IERange:
IERange est une implémentation du W3C DOM Ranges fonctionnalités complet pour Internet Explorer, ce qui permet aux utilisateurs de écrire un version croisée de leur code de manipulation de gamme.
Prise en charge des API Gamme:
document.createRange()
startContainer
,startOffset
,endContainer
,endOffset
,commonAncestorContainer
,collapsed
setStart()
,setEnd()
,setStartBefore()
,setStartAfter()
,setEndBefore()
,setEndAfter()
,selectNode()
,selectNodeContents()
,collapse()
insertNode()
,surroundContents()
extractContents()
,cloneContents()
,deleteContents()
compareBoundaryPoints()
,cloneRange()
,createContextualFragment()
,toString()
soutient API de sélection:
- support Range (Webkit-style)
window.getSelection()
addRange()
,removeAllRanges()
,getRangeAt()
,toString()
La plus grande force d'IERange réside dans ses algorithmes d'expression d'un 'TextRange' en termes de nœuds et de décalages (comme le fait un Range) et de conversion de tels objets en un' TextRange'. Cependant, il ne peut pas complètement abstraire les différences entre les deux: par exemple, le 'TextRange' sous-jacent changera en réponse aux changements dans le DOM tandis que le' IERange' construit sur lui ne reflétera pas ces changements. Il existe également des différences entre la façon dont la sélection de l'utilisateur est représentée en tant que plage, qui se situent dans le navigateur. [suite] –
Notez également que créer un 'IERange' est beaucoup plus lent que d'obtenir une plage DOM dans d'autres navigateurs. Aucun de ceux-ci sont la faute de la bibliothèque; c'est simplement la nature du problème. En bref, la meilleure utilisation avec soin et la connaissance de l'abstraction 'IERange' représente. –
fieldselection est un plugin jquery très utile pour la sélection/la manipulation de gamme.
Ne fonctionne que pour les zones de texte et les entrées. –
J'ai écrit une nouvelle gamme/bibliothèque de sélection appelée Rangy qui est similaire au concept IERange mais va beaucoup plus loin.
Le noyau est à peu près complet et
currently available to download. Je suis actuellement en train de corriger les erreurs et de les documenter et cela ne devrait être que quelques semaines avant une version complète.
31 Août 2011 Mise à jour
Rangy est maintenant stable et à la version 1.2 (downloads page).
Merci pour votre excellent travail sur Rangy Tim Down. J'utilise votre lib dans mon nouveau projet et vous ai déjà envoyé un rapport de bug. Je pense que ce serait une bonne idée de créer une liste de diffusion, de sorte qu'il soit possible de discuter des problèmes/fonctionnalités et de suggérer de nouvelles fonctionnalités (peut-être avec un patch). Par exemple, j'essaie actuellement d'obtenir un startOffset et un endOffset pour le commonAncestorContainer plutôt que de démarrer/terminer des conteneurs. Ce serait une fonctionnalité utile, je crois. – Tom
Avez-vous vu http://code.google.com/p/ierange/? –
Roatin, c'est exactement ce que je cherchais! Pouvez-vous en faire une question afin que je puisse vous upvote?:) –
Je veux dire la réponse: D –