2016-04-29 3 views
0

Je veux supprimer un texte particulier avant et après l'exemple text.For sélectionné si le texte est:Supprimer le texte particulier avant et après le texte sélectionné javascript

<p>This is a &lt;random>sentence&lt;/random> that i am writing<p> 

Si l'utilisateur sélectionne du texte, il devrait supprimer < aléatoire> et </aléatoire> à partir du texte et du texte sera comme ça.

This is a sentence that i am writing. 

Si l'utilisateur sélectionne autre chose que 'phrase', rien ne se passera. Je sais comment sélectionner un texte particulier mais je ne connais pas la prochaine étape sur la façon de supprimer le texte avant et après un texte particulier.Est-ce possible?

Répondre

1

function replaceSelection() { 
 
    var sel, range, fragment; 
 

 
    if (typeof window.getSelection != "undefined") { 
 
     // IE 9 and other non-IE browsers 
 
     sel = window.getSelection(); 
 

 
     // Test that the Selection object contains at least one Range 
 
     if (sel.getRangeAt && sel.rangeCount) { 
 
      // Get the first Range (only Firefox supports more than one) 
 
      range = window.getSelection().getRangeAt(0); 
 
      var selectedText = range.toString(); 
 
      var replacementText = selectedText.replace(/&lt;\/?random>/, ''); 
 
      range.deleteContents(); 
 

 
      // Create a DocumentFragment to insert and populate it with HTML 
 
      // Need to test for the existence of range.createContextualFragment 
 
      // because it's non-standard and IE 9 does not support it 
 
      if (range.createContextualFragment) { 
 
       fragment = range.createContextualFragment(replacementText); 
 
      } else { 
 
       // In IE 9 we need to use innerHTML of a temporary element 
 
       var div = document.createElement("div"), child; 
 
       div.innerHTML = replacementText; 
 
       fragment = document.createDocumentFragment(); 
 
       while ((child = div.firstChild)) { 
 
        fragment.appendChild(child); 
 
       } 
 
      } 
 
      var firstInsertedNode = fragment.firstChild; 
 
      var lastInsertedNode = fragment.lastChild; 
 
      range.insertNode(fragment); 
 
      if (selectInserted) { 
 
       if (firstInsertedNode) { 
 
        range.setStartBefore(firstInsertedNode); 
 
        range.setEndAfter(lastInsertedNode); 
 
       } 
 
       sel.removeAllRanges(); 
 
       sel.addRange(range); 
 
      } 
 
     } 
 
    } else if (document.selection && document.selection.type != "Control") { 
 
     // IE 8 and below 
 
     range = document.selection.createRange(); 
 
     var selectedText = range.text; 
 
     var replacementText = selectedText.replace(/&lt;\/?random>/, '')   
 
     range.pasteHTML(replacementText); 
 
    } 
 
}
<div onmouseup="replaceSelection()"><p>This is a &lt;random>sentence&lt;/random> that i am writing<p></div>