Как я могу рассчитать количество примененного заполнения на стороне сервера? - PullRequest
2 голосов
/ 13 января 2012

Возможно ли запустить на стороне сервера тот же процесс, что и браузеры, чтобы применить CSS к DOM?

Например, могу ли я взять документ HTML, применить все правила CSS (связанные, встроенные и встроенные), чтобы определить для любого элемента его атрибуты. Меня больше всего беспокоит блочная модель (то есть ее положение, поля, границы и отступы).

Пока я могу думать только о том, чтобы использовать Selenium RC и jQuery для передачи значений обратно. Тем не менее, это кажется очень ресурсоемким, поэтому мне интересно, есть ли другой путь. Я просмотрел Google и поиски «разбора CSS» приносят результаты только для чтения отдельных стилей, а не для применения всех правил CSS ко всему DOM, а затем для обработки результатов.

Подойдет любой язык.

Пример (не реальный вариант использования, а аналогичный)

Вы создаете API, который позволяет людям, знакомым с HTML и CSS, создавать графические интерфейсы Java. API позволяет разработчику передавать свой HTML, а затем возвращает обратно весь код для создания GUI с одинаковыми размерами и позициями для всех элементов.

Ответы [ 2 ]

6 голосов
/ 15 января 2012

Начните с чтения этого документа о том, как работают браузеры , чтобы понять, что для вычисления чего-то подобного требуется механизм компоновки. Такие вещи, как размеры визуализированных шрифтов и изображений, а также блочная модель с ее сложными правилами свертывания полей и многое другое, влияют на окончательный макет.

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

Сказав это, движок WebKit используется во многих проектах, но большинство из них - браузеры или другое программное обеспечение на стороне клиента. Быстрый поиск в Google показал один интересный результат:

  • phantomjs (" безголовый WebKit с JavaScript API ", чтобы вы могли использовать JavaScript для проверки DOM и эффектов применяемого CSS)

Если вы не можете разместить существующий механизм разметки, возможно, существуют некоторые технологии разметки пользовательского интерфейса в стиле HTML. возможно, это лучший вариант? Например. Microsoft Silverlight / XAML , Adobe MXML (также поддерживает некоторые правила CSS), UIML или XUL Mozilla.

0 голосов
/ 16 января 2012

Также обратите внимание на библиотеку http://htmlunit.sourceforge.net/, которая пытается эмулировать браузеры с полной поддержкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...