Saturday, March 7, 2009

Изменения в разрабатываемом браузере

Привел к нормальному внешнему виду в разрабатываемый мною браузер:
  • одиночное окно отображавшее сразу компонент для отображения отрендеренного кода - заменил на классическое отображение содержащее над компонентом отображения страницы панель с отображением текущего адреса, кнопки назад, напечатать и выйти. В результате реализовано полный функционал доступный из публичных интерфейсов библиотеки gtkhtml, связанный с рендеренгом страниц. В внутри еще доступен дамп внутреннего состояния текущего отображенной страницы - но вовне он не доступен.
  • не реализовал: автоматическое перенаправление через определенное время (сообщение в консоль) и анимацию при загрузке страницы;
  • в остальном можно уже использовать как нормальный браузер, простой POST без передачи файлов реализован, есть поддержка cookies - как основной браузер использовать не рекомендую из-за проблем отображения, но для тестов вполне.
Приложение наследует особености библиотеки gtkhtml:
  • не поддерживает стили css;
  • не корректный рендеринг страниц - может расползаться отображение фреймов и дивов;
  • не поддерживает javascript;
  • алгоритм рендеринга отличается от классического: преобразования HTML -> DOM -> Rendering HTML + Styles(просчет стили для каждого элемента DOM с последующим отображением. На данный момент структуру формирования дерева подобного DOM я не обнаружил - страница разбивается на список открывающихся и закрывающихся тегов, и как следствие сложно добавить применение стилей.
В новых версиях библиотеки с присутствует мой патч решающий пролему с поддержкой кодирово отличных от utf8, и исправлена ошибка с неправильным отображением entity в некоторых случаях.

No comments: