2012-02-21 2 views
0

У нас есть форма, которая позволяет людям вводить текст в формате HTML и этот ввод затем отображается в другом месте на веб-странице.Можно ли подсчитать строки видимого текста в формате HTML?

Из-за ограничений компоновки вход может быть не длиннее, чем X строк. Предварительный просмотр отредактированного текста на веб-странице отсутствует. Входные данные после отправки немедленно публикуются. (Краткое пояснение, почему я не могу исправить макет: текст, о котором идет речь, отображается как надпись над изображением. Оверлей имеет размер изображения и фиксирован. Текст должен быть полностью виден внутри этого наложения и не должен разливаться более.)

Меня просят реализовать что-то, чтобы люди не вводили слишком много текста.

Моя первая попытка была для «maxLength», но идет не так из-за возможности форматирования ввода html.

Помимо очевидных двух: 1. ожидающих, что пользователи будут умными и/или 2. реализуют метод предварительного просмотра, как еще мы могли бы это решить?

Я из идей, я также принимаю объяснение, почему это невозможно

Используемые технологии: Java, калитка 1.4.x

+2

Посмотрите на этот ответ http://stackoverflow.com/a/3149645/1030409 – Patrick

+2

Вы не можете знать, так как html не имеет понятия линий. – bert

+0

* «Из-за ограничений компоновки вход может быть не длиннее X строк». * Исправить расположение. Когда я отправляю размер текста в 4 раза нормальный, я ожидаю, что сайт продолжит работу. –

ответ

1

Я не эксперт веб-разработки, так это может не достаточно точный ответ.

С помощью javascript вы можете получить эффективный размер элемента HTML после его рендеринга в браузере. Таким образом, одним из решений может быть отображение страницы на стороне сервера и проверка того, превышает ли результат размер, который вы ожидаете.

Это может не гарантировать правильного результата, поскольку сервер может отображать страницу иначе, чем клиент. Вы также можете всегда принимать входные данные, а затем, когда клиент отображает страницу, у вас есть фрагмент javascript, который проверяет (на данный момент клиентскую), является ли результат рендеринга в порядке. Если это не так, дайте javascript перенаправить клиента на страницу с ошибкой, чтобы он мог редактировать свой ввод.

Что бы я сделал, это изменить макет, чтобы ничего не сломалось, если пользователь вводит слишком много текста. Использование свойства переполнения CSS может стать началом. Вы также можете реализовать лучшие решения в javascript, такие как динамическое изменение размера текста, пока оно не будет соответствовать требуемому размеру.

+0

Это звучит очень интересно (как отмечено выше, я не могу исправить макет, текст может просто не стать больше, чем изображение, которое оно отображается). Надеюсь, я могу узнать больше об этом javascript. Благодарю. – Yashima

+2

Вы также можете сделать разметку, пока она набрана невидимым div и проверьте размер. – biziclop

+0

Мне нужно, чтобы стили были доступны для этого решения. И у меня нет (по крайней мере, не тривиально), потому что контент публикуется на совершенно другом сервере. Это по-прежнему кажется лучшим решением. Благодарю. – Yashima

Смежные вопросы