2013-08-26 2 views
-1

Что лучше всего кросс-браузер для обрезки элемента innerHTML?
jsFiddle: http://jsfiddle.net/6hk8z/Каков наилучший способ кросс-браузера обрезать элемент innerHTML?

+0

Что вы подразумеваете под "урезать"? – Bergi

+0

Trim - полоса пробела с начала и конца строки. – user2719515

+0

Что это связано с 'innerHTML'? В строке примера скрипта нет даже пробела. – Bergi

ответ

0

Я предполагаю, что вы сбиты с толку код   html, который не является пробелом, а просто отображается как таковой браузером. См настроенную реализации ниже:

String.prototype.trimmed = function(){ 
    return this.replace(
     /^(\s|&nbsp;|<br\s*\/?>)+?|(\s|&nbsp;|<br\s*\/?>)+?$/ig, ' ' 
    ).trim(); 
} 

обновленный jsFiddle

+0

Хорошо, но попробуйте удалить текст в div и вставить 3 пробела. Затем нажмите на div. – user2719515

+0

Я не уверен, что вы получаете, если вы обрезаете строку, содержащую только пробелы, вы получаете пустую строку. – Emissary

+0

Не перезаписывайте собственный метод 'String.prototype.trim'! – Bergi

-1

Вы пробовали JQuery-х $.trim()? См. JQuery documentation для более подробной информации.

+0

Вопрос не предусматривает jQuery - совершенно ненужно. – Emissary

+0

плюс скрипка показывает, что загружен jquery. –

0

Используйте DOM, не innerHTML, которые вам нужно будет разобрать.

function trimContents(element) { 
    function iterate(start, sibling, reg) { 
     for(var next, c = element[start]; c != null; c=next) { 
      next = c[sibling]; 
      if (c.nodeType == 1 && c.nodeName.toLowerCase() == "br" 
      || c.nodeType == 3 && !(c.nodeValue = c.nodeValue.replace(reg, ""))) 
       element.removeChild(c); 
      else 
       break; 
     } 
    } 
    iterate("firstChild", "nextSibling", /^\s+/); 
    iterate("lastChild", "previousSibling", /\s+$/); 
} 

(demo at jsfiddle.net)

+0

Хорошо: ........ Это определенно делает тонны смысла: o – iConnor

+0

это на самом деле довольно аккуратно, но он работает только при первом щелчке для меня (хром) - я никогда не беспокоился о 'contenteditable'; кажется, имеет некоторое причудливое поведение (добавление нагрузок div). – Emissary

+0

@Emissary: ​​Вы хотите, чтобы он также удалял пустые divs? – Bergi