Рождается новый browser и в связи с этим несколько вопросов.
Сначала о тех фичах которые есть:
1) HTML/XHTML и CSS — level 2.1 (не всё) + level 3 (не все, всякие полезные штуки оттуда)
см.
здесь и
здесь.
2) Градиетнтный background, expandable image (например закругленные бордюры и пр.), см.
здесь. Поддержка alpha канала.
3) %% units — позволяют делать vertical alignment и flex в стиле XUL.
здесь
4) flow:horizontal — размещение блоков слева направо в контейнерах (flow:vertical — стандартное поведение DIV контейнера — сверху вниз)
5) Кроме поддержки position:relative/absolute/fixed добавлено также position:popup — создание не блокирующих popup окон типа menu и tooltip.
6) lightweight frames — например absolute div в контейнере может быть рамещен поверх дочернего frame.
<frameset> аналогичен <iframe> т.е. может быть включен в любое место HTML (а не как отдельная сущность)
7) display: inline-block из CSS2.1 имплементирован — кстати ни один броузер из большой тройки эту фичу так и не поддерживает (за искл. частично IE).
8) CSS атрибут behavior:name-of-js-object. Где name-of-js-object есть JS конструкция
<STYLE>
behavior:my_button_class;
....
<SCRIPT>
var my_button_class =
{
onclick: function() {....},
onblur: function() {....}
....
}
9) селекторы вида DIV:active работают для всех элементов а не только для A
Вопросы:
1) Какие еще фичи хотелось бы видеть?
2) Требутся ли расширение набора <input> типов? Например <input type="number" spin="true">.
И один принципиальный вопрос про JS:
Пользуется ли народ кострукциями prototype в быту?
Например:
String.prototype.mymethod = function() { something }
// invocation:
"one".mymethod();
Пока в моей версии JS я обошелся без prototype, т.е. то же самое описывается как:
String.mymethod = function() { something }
// invocation:
"one".mymethod();
Зачем было введено свойство prototype мне не ведомо. Идеи есть?
Кстати есть конструкция property (то же что и function только вызов ея устроен по другому. )
MyClass.myproperty =
property(val)
{
if(isExists(val)) // 'set' invocation
this.val = val;
return this.val; // either 'get' or 'set' invocation
}
// invocation:
myclassinst.myproperty = "one";// set
var s = myclassinst.myproperty; // get
Сам броузер (main window layout) описан полностью в HTML/CSS/JS т.е. скины на него это просто HTML со товарищи.
Кстати все стандартные <input> widgets поэлементно описываемы в CSS. Например фрагмент описания scrollbar:
scrollbar[type="vertical"]>.thumb
{
width:100%%;
min-height: 15px;
border-left: 1px solid #C5C7C7;
background-color:transparent;
background-image:url(res:thumb-v-normal.png);
background-position:50% 50%; /* center middle */
background-repeat:no-repeat;
}
scrollbar[type="vertical"]>.thumb:hover
{
background-color: #B1C4D9;
border-top: 1px solid #CCD9E9;
border-left: 1px solid #CCD9E9;
border-right: 1px solid #90A5C3;
border-bottom: 1px solid #90A5C3;
background-image:url(res:thumb-v-hover.png);
}
Вот реальный screenshot с такими scrollbars:
Если кто дочитал до этого места — большое человеческое спасибо. Комментарии очень нужны.