Javascript enveloppe le texte avec une étiquette

J'ajoute un bouton à tinyMCE et je veux savoir comment envelopper le texte à l'intérieur des tags avec javascript, par exemple (ce texte en surbrillance s'emballe à l'intérieur des balises [highlight][/highlight] ). Et maintenant le tinymce entier

 (function() { tinymce.create('tinymce.plugins.shoutButton', { init : function(ed, url) { ed.addButton('shout.button', { title : 'shout.button', image : 'viral.gif', onclick : function() { window.alert("booh"); }); }, createControl : function(n, cm) { return null; }, getInfo : function() { return { longname : "Shout button", author : 'SAFAD', authorurl : 'http://safadsoft.com/', infourl : 'http://safadsoft.com/', version : "1.0" }; } }); tinymce.PluginManager.add('shout.button', tinymce.plugins.ShoutButton); 

}) ();

  • Déterminer les minutes jusqu'à minuit
  • Obtenez une distance entre deux points dans un canevas
  • Analyse XML / RSS de l'URL à l'aide de Java Script
  • GetSelection & SurroundContents sur plusieurs balises
  • Utiliser $ http à l'intérieur d'un fournisseur personnalisé dans app config, angular.js
  • OnClick in Chrome Extension ne marche pas
  • Appel à l'élément non existant du tableau, réduit considérablement les performances
  • Comment décoder un script JSFuck?
  • Obtenir une capture d'écran à l'aide de PhantomJS en C #
  • Show Twitter Bootstrap modal sur formulaire submit
  • Pourquoi JavaScript ne supporte pas le multithreading?
  • Quelle est la meilleure façon de passer à travers un ensemble d'éléments en JavaScript?
  • 2 Solutions collect form web for “Javascript enveloppe le texte avec une étiquette”

    Vous pouvez utiliser les méthodes setSelectionRange (mozilla / webkit) ou selection.createRange (IE) pour trouver le texte actuellement en surbrillance dans une zone de texte. J'ai posé un exemple sur jsfiddle , mais j'ai commenté votre regexp car il bloque le navigateur dans de nombreux cas. Vous devez le rendre plus restrictif, et il passe actuellement beaucoup d'autres choses que Youtube url's ainsi.

    Cependant, l'exemple a une solution de travail pour obtenir le texte actuellement sélectionné, que vous pouvez, après avoir réparé votre modèle, appliquer à idPattern.exec ().

     idPattern = /(?:(?:[^v]+)+v.)?([^&=]{11})(?=&|$)/; // var vidId = prompt("YouTube Video", "Enter the id or url for your video"); var vidId; el = document.getElementById('texty'); if (el.setSelectionRange) { var vidId = el.value.substring(el.selectionStart,el.selectionEnd); } else if(document.selection.createRange()) { var vidId = document.selection.createRange().text; } alert(vidId); 

    EDIT: Emballage du texte en surbrillance et sortie de l'élément. Exemple

     el = document.getElementById('texty'); if (el.setSelectionRange) { el.value = el.value.substring(0,el.selectionStart) + "[highlight]" + el.value.substring(el.selectionStart,el.selectionEnd) + "[/highlight]" + el.value.substring(el.selectionEnd,el.value.length); } else if(document.selection.createRange()) { document.selection.createRange().text = "[highlight]" + document.selection.createRange().text + "[/highlight]"; } 

    Le problème était les erreurs de syntaxe, les parenthèses fermées et les demi-colons manquants, en utilisant l'aide de JSHint et JSLint de Jsfiddle, je l'ai corrigé:

     (function () { tinymce.create('tinymce.plugins.shoutButton', { init: function (ed, url) { ed.addButton('shout.button', { title: 'shout.button', image: 'viral.gif', onclick: function () { window.alert("booh"); } }); createControl: function (n, cm) { return null; } getInfo: function () { return { longname: "Shout button", author: 'You !', authorurl: 'http://example.com/', infourl: 'http://example.com/', version: "1.0" }; } } }); tinymce.PluginManager.add('shout.button', tinymce.plugins.ShoutButton); })(); 

    Meilleures salutations

    JavaScript rend le site Web intelligent, beauté et facile à utiliser.