Comment puis-je mettre en évidence le texte de l'objet DOM Range?

Je sélectionne du texte sur la page html(ouvert dans firefox) à l'aide de la souris,et à l'aide de fonctions javascript, j'ai créer/récupérer la rangeobject correspondant au texte sélectionné.

 userSelection =window.getSelection(); 
 var rangeObject = getRangeObject(userSelection);

Maintenant, je tiens à souligner tout le texte qui est sous l'rangeobject.Je fais comme cela,

  var span = document.createElement("span");
  rangeObject.surroundContents(span);
  span.style.backgroundColor = "yellow";

Bien,cela fonctionne très bien, seulement quand le rangeobject(point de départ et le point de terminaison) se trouve dans la même textnode,puis il met en évidence le texte correspondant.Ex

    <p>In this case,the text selected will be highlighted properly,
       because the selected text lies under a single textnode</p>

Mais si le rangeobject couvre plus d'un textnode, alors il n'est pas de travail properlay, Il met en évidence seulement les textes qui se trouvent dans la première textnode,Ex

 <p><h3>In this case</h3>only the text inside the header(h3) 
  will be highlighted, not any text outside the header</p> 

Une idée de comment puis-je faire, tous les textes qui relève de la rangeobject,a mis en évidence,indépendamment de l'existence de gamme se trouve dans un seul nœud ou plusieurs nœud?
Merci....

source d'informationauteur ganapati