Span со стилем пробела в IE (7) применен _past_ конец диапазона - PullRequest
0 голосов
/ 19 марта 2009

У нас есть приложение, в котором пользователи могут вводить «заметки» в элемент управления расширенного редактирования (RedEditor от Telerik, но здесь это не имеет значения). У нас был пользователь, который вводил заметки из w / in Safari с <span></span> в середине заметки, и у этого промежутка был стиль, определяющий white-space:pre HTML-код заметки был в форме:

<div> This is a note <span class="Apple-tab-span" style="white-space: pre; ">   </span> and here's more of the note. </div>

Достаточно просто, стиль должен применяться к промежутку, и в промежутке было 4 пробела. В результирующем выводе должно было быть 4 пробела.

Вот проблема. IE, кажется, применяет этот стиль white-space: pre; не только к span, но и к div! Следовательно, эта длинная строка, которая должна была быть перенесена, поскольку она не входит в промежуток, теперь выталкивает документ до тех пор, пока строка не уместится на странице.

Что мне не хватает. Я знаю, что у IE есть проблемы, но это кажется неправильным даже для IE.

Итак, вопрос (ы):

1) Верно ли, что атрибут white-space должен был применяться только к диапазону?

2) Можно ли это как-то решить? Помните, я не контролирую вводимый контент. И он введен с Mac с Safari и просматривается в IE.

Редактировать. Тип документа на рассматриваемой странице: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Ответы [ 3 ]

0 голосов
/ 19 марта 2009

1) Да, вы правы.

2) У меня было много проблем с элементами управления Telerik, в частности с RTE, изменяющим необработанный HTML, введенный в него. Я предлагаю вам проверить свою базу данных и посмотреть, какой там хранится HTML.

Надеюсь, что поможет

Дарко

0 голосов
/ 20 марта 2009

Я не уверен, что вы пытаетесь достичь с пробелом в промежутке с pre в качестве стиля. Если вы хотите, чтобы в предложении было пробел, а не перенос слов, поместите стиль без переносов на весь div. Если вам нужен только пробел, поместите html-сущность & nbsp непосредственно между двумя словами, и они не разорвутся. Или, если вы пытаетесь создать произвольное пространство больше, чем один пробел, забудьте о pre и просто дайте этому промежутку ширину.

0 голосов
/ 19 марта 2009

Используете ли вы DOCTYPE в стандартном режиме? В режиме Quirks IE неправильно применяет «пробел» только к элементам блока. (Я не мог заставить его вытекать пустое пространство из промежутка, хотя он просто не работал.)

Я не контролирую вводимый контент.

Необычно разрешать ввод необработанного HTML-контента; в этом случае вы не сможете исправить какие-либо странности браузера!

...