Xpoint
   [напомнить пароль]

Перенос сплошных строк в Opera и Chrome

Метки: [без меток]
2009-07-23 20:30:23 [обр] Jared(3/26)[досье]

Приветствую.
У меня есть оносительно узкий div, куда при определенных действиях пользователя скриптом вносится достаточно длинный URL, в котором основную часть занимает QUERY_STRING. Предназначен этот URL в первую очередь для того, чтобы пользователь ручками копи-пастил его, или, как вариант сохранял у себя на машине/в закладках/где-то еще. FF считает, что вправе переносить фрагменты этого URL'а на новую строку по символам "&". Опера и Хром другого мнения; в результате я вынужден показывать пользователю достаточно длинную горизонтальную прокрутку в этой области.

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

спустя 3 часа 3 минуты [обр] Василий Свиридов(1/175)[досье]
А почему бы просто не обернуть это в style="white-space: pre;"?
спустя 1 час 24 минуты [обр] Jared(3/26)[досье]

В том-то и дело, что при white-space: pre; движок браузера отрисовывает тексты в соответствии с выставленными прямо в тексте табами, пробелами и переносами строк. Без этого режима двиг считает себя в праве переносить строки по определенным символам - например символу пробела. Пробел, естесственно не единственный такой символ. Но каждый браузер имеет свой набор символов по которым он переносит строку, и символ & является таким не для всех браузеров. Задача в том, чтобы дать браузеру понять, что я хочу, чтобы он автоматически переносил строку по определенным символам - в данном случае, по амперсанду.

Решение на коленке - вставлять в ссылку пробелы, по которым она будет автоматически разбиваться на подстроки, а потом, при отработке скрипта по параметрам, в этой ссылке переданным, убивать пробелы. Но тут есть минусы - в аське и форумах (при автоматической обертке в ссылку всего, что начинается с http://) такая ссылка получается битой.

В результате, как временное решение в качестве таких "разбивающих" символов используются "?". Но это костыль, причем не самый красивый.

спустя 8 часов [обр] index(0/2)[досье]

А что если задать такой стиль DIV:

<div style="word-wrap:break-word; overflow: hidden;">

Все браузеры кроме Opera будут держать ширину DIV и переносить. В Opera часть ссылки будет не видна, но ширина DIV останется, он не расползется.

спустя 1 минуту [обр] index(0/2)[досье]

И еще гляньте ссылку: http://habrahabr.ru/blogs/webdev/22098/

Может наведет Вас на оптимальное решение.

спустя 2 дня 20 часов [обр] Jared(3/26)[досье]

Спасибо за ответы.

| <div style="word-wrap:break-word; overflow: hidden;">
| Все браузеры кроме Opera будут держать ширину DIV и переносить.
| В Opera часть ссылки будет не видна

К несчастью, задача именно в том, чтобы ссылка была видна полностью; и переносилась. Как один из вариантов - задание стиля 'overflow:auto' - пусть будет прокрутка, но пользователь должен иметь возможность скопировать ссылку. Все же, из эстетических соображений, да по оглядке на юзабилити я пока вынужден использовать в QUERY_STRING символ '?', как универсальный.

| И еще гляньте ссылку: http://habrahabr.ru/blogs/webdev/22098/

Спасибо, но по ссылке речь идет о server-side решениях. У меня полностью клиентское JS приложение. Разумеется, разбить ссылку пробелами не состовляет проблемы. Но при копи-пасте в форумы или в аську такая ссылка окажется сильно битой.

Конкретный вопрос именно в том, как заставить Оперу и Хром разбивать "длинное слово" по символу '&' (или другому кроме пробелов, табов или '?').

Powered by POEM™ Engine Copyright © 2002-2005