заменить символ (пробел) на всей веб-странице, используя javascript / jQuery - PullRequest
1 голос
/ 18 февраля 2010

Итак, я выяснил, что функция replace, которая находит все однобуквенные "слова" (предлоги и конъюнкции и т. Д.) И заменяет пробел после них на  , чтобы не оставлять эти символы в конце строки. , должно быть что-то вроде

myString.replace(/\s\w(?=\s)/,"$1 ")

Теперь, как мне применить его ко всему тексту на веб-странице? Я ищу какое-то универсальное решение, простую функцию, которую я вставил в <head> без необходимости что-либо менять на веб-странице.

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 18 февраля 2010

вы можете попробовать что-то вроде этого:

$('body').contents().filter(function(){ 
     return this.nodeType == 3;
}).each(function(){
   this.nodeValue = this.nodeValue.replace(/\s\w(?=\s)/,"$1&nbsp;");
});

По сути, мы берем элемент body и получаем его содержимое - метод contents() будет захватывать как текстовые узлы, так и элементы, что и нужно Затем мы фильтруем по nodeType, сокращая набор только до текстовых узлов. тогда мы делаем регулярное выражение заменить.

2 голосов
/ 02 августа 2012
var str = 'When you want to change the DispFormUrl'.replace(/ /g, '&nbsp;');
alert(str);

результат : "Когда вы хотите изменить DispFormUrl"

2 голосов
/ 18 февраля 2010
function replaceText(node)
{
  var current = node.nodeValue;
  var replaced = current.replace(searchpattern, replacepattern);
  node.nodeValue = replaced;
}
function traverse(node)
{
  var children = node.childNodes;
  var childLen = children.length;
  for(var i = 0; i < childLen; i++)
  {
    var child = children.item(i);
    if(child.nodeType == 3)//or if(child instanceof Text)
      replaceText(child);
    else
      traverse(child);
  }
}
function replaceAll()
{
  traverse(document.body);
}

Звоните replaceAll() из тела onload.

<body onload="replaceAll()">
...