2009-10-24 5 views
3

J'ai un script qui (je pense) doit utiliser surroundContents pour envelopper la zone de sélection. Cela me permet d'ajouter quelque chose, puis de réaffecter la plage en tant que sélection.SurroundContenu sur une plage couvrant plusieurs tags (problème getRangeAt?)

Je crois que j'ai réduit le problème à une mauvaise utilisation de getRangeAt, mais je ne suis pas sûr de savoir comment le corriger.

Voici le bref morceau de code:

 function getRangeObject(selectionObject) { 
     // Moz 
     if (selectionObject.getRangeAt) { 
      return selectionObject.getRangeAt(0); 
     } 

Et voici la ligne 89 où il renvoie une erreur à moi:

rangeObject.surroundContents(newNode); 

Et bien sûr, voici l'erreur:

Error: uncaught exception: [Exception... "The boundary-points of a range does not meet specific requirements." code: "1" nsresult: "0x805c0001 (NS_ERROR_DOM_RANGE_BAD_BOUNDARYPOINTS_ERR)" location: " http://www.latentmotion.com/insertNode/index26.html Line: 89"]

S'il est utile de voir le tout, vous pouvez voir le script (jusqu'à présent) ici:

Et l'assistant de sélection de texte dont je partais était quirksmode - qui ne détaille pas l'utilisation de plusieurs plages, located here.

Merci d'avance pour votre aide.

+0

pouvez-vous m'aider avec la façon dont vous avez résolu le problème? –

Répondre

1

Je pense que le message d'erreur décrit bien le problème. This section of the DOM Range spec décrit ce qui conduit à une exception levée par un Range lors de l'utilisation de surroundContents.

+0

Ouais - ça pourrait être ça. J'ai lu les spécifications auxquelles vous étiez lié, mais je ne sais toujours pas comment résoudre le problème. Existe-t-il un moyen de nettoyer/sélectionner complètement le noeud non-texte qui renvoie l'erreur? Peut-être que je pourrais détecter le nœud partiellement sélectionné et le fermer en quelque sorte? – Matrym

+1

Il pourrait être utile de dire plus précisément ce que vous essayez de faire. Qu'est-ce que vous voulez ajouter et où? –

Questions connexes