Замена   из JavaScript dom текстовый узел

Мы используем Trac и оба из двух плагинов Мерзавца - GitPlugin, а также GitWebPlugin. Посмотрите, у нас на самом деле есть три репозитория (длинная история), и Trac все еще ограничен единым репозиторием. Так, я записал свой собственный плагин, который определяет синтаксис Wiki (Макросы на самом деле) для ссылки на репозиторий, ответвление или фиксацию, и они связываются со ссылками GitWebPlugin. Я также смог записать некоторые сценарии рычага мерзавца так, чтобы мы могли сослаться, закрыть или изменить билеты Trac в сообщениях о фиксации - это - измененная версия рычага фиксации SVN, который идет с Trac.

основная проблема с GitPlugin состоит в том, что это медленно из-за отсутствия "libgit" библиотеки. Это не плохо для проектов маленьких среднего размера, но крупные проекты являются болью. При реальной необходимости в быстром веб-интерфейсе, необходимо действительно проверить Cgit. Cgit делает свой собственный libgit, таким образом, он связывается с конкретной версией Мерзавца.

истина , однако, то, что веб-представления Мерзавца не настолько полезны кроме тех случаев, когда Вы хотите отправить кому-то ссылку (как в электронном письме или IRC). Поскольку с Мерзавцем у Вас есть весь репозиторий в каждом клоне, Вы - очень более обеспеченные инструменты использования как gitk или даже простой git log. Запросы и захват возможностей действительно удивительны и (очевидно) быстры. Я нахожу, что Cgit и GitWeb действительно только полезны для отправления ссылок к фиксациям, и это довольно редко.

56
задан Kip 30 September 2009 в 14:39
поделиться

5 ответов

This is much easier than you're making it. The text node will not have the literal string " " in it, it'll have have the corresponding character with code 160.

function replaceNbsps(str) {
  var re = new RegExp(String.fromCharCode(160), "g");
  return str.replace(re, " ");
}

textNode.nodeValue = replaceNbsps(textNode.nodeValue);

UPDATE

Even easier:

textNode.nodeValue = textNode.nodeValue.replace(/\u00a0/g, " ");
116
ответ дан 26 November 2019 в 17:05
поделиться

If you only need to replace   then you can use a far simpler regex:

var textWithNBSpaceReplaced = originalText.replace(/ /g, ' ');

Also, there is a typo in your div example, it says &nnbsp; instead of  .

25
ответ дан 26 November 2019 в 17:05
поделиться

I think when you define a function with "var foo = function() {...};", the function is only defined after that line. In other words, try this:

var replaceHtmlEntites = (function() {
  var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
  var translate = {
    "nbsp": " ",
    "amp" : "&",
    "quot": "\"",
    "lt"  : "<",
    "gt"  : ">"
  };
  return function(s) {
    return ( s.replace(translate_re, function(match, entity) {
      return translate[entity];
    }) );
  }
})();

var cleanText = text.replace(/^\xa0*([^\xa0]*)\xa0*$/g,"");
cleanText = replaceHtmlEntities(text);

Edit: Also, only use "var" the first time you declare a variable (you're using it twice on the cleanText variable).

Edit 2: The problem is the spelling of the function name. You have "var replaceHtmlEntites =". It should be "var replaceHtmlEntities ="

6
ответ дан 26 November 2019 в 17:05
поделиться

That first line is pretty messed up. It only needs to be:

var cleanText = text.replace(/\xA0/g,' ');

That should be all you need.

8
ответ дан 26 November 2019 в 17:05
поделиться

Я использовал это, и это сработало:

var cleanText = text.replace(/&amp;nbsp;/g,"");
4
ответ дан 26 November 2019 в 17:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: