Ну например у меня шрифты в IE9 сглаживаются, а в Gecko и Webkit — ничего подобного. Мелочь, а приятно. Помню, ещё Ms хвастались, что у них лучше всего border-radius реализован…
В общем, похоже, они стараются следить и за мелочами тоже — в отличие от остальных.
Проще всего взять Wine и интегрировать с системой. С меню, с /home/user, с ассоциациями файлов. Сделать каталог приложений, из которого можно без плясок с бубном поставить всё что надо парой кликов.
По поводу Global Menu. Это очень компромиссное решение. С одной стороны в том же FF мне меню нужно раз в год, и раз в год я могу подвести мышку вверх (хоть это и неудобно) ради красоты окна и отсутствия на нём меню. Но в том же LibreOffice мне меню нужно постоянно, и там это не очень хорошее решение.
Дело в том, что если делаешь мобильную версию — пускай будет, она никому не мешает — но ведь на десктоп не надо забивать. Canonical же бросила все силы на мобильники/планшеты (как, кстати, и Gnome), а десктоп страдает.
Про валидность. Для этого и введены префиксы (и не только css, например в хроме у форм есть атрибут -webkit-text-speech). Просто придумываем свой префикс и делаем свой атрибут.
jQuery.data работает абсолютно с любыми объектами, а не с DOM-элементами.
Внутри jQuery есть некое хранилище, которое хранит сам элемент и все его ключи-значения. Оно никак не связано с data-атрибутами, $().data-функция сама проверяет элемент на data-атрибуты.
Вот для справки аналог:
var store = [];
function getData(obj, key){
for(var i = 0, l = store.length; i < l; i++){
if(store[i].obj === obj) return store[i].values[key];
}
}
function setData(obj, key, val){
var str = { obj:obj, values:{} }, is = 0;
for(var i = 0, l = store.length; i < l; i++){
if(store[i].obj === obj) is = str = store[i].values;
}
if(!is) store.push(str);
store.values[key] = val;
}
Для начала. Для блоков кода используйте конструкцию <source lang=«javascript»>… код...> (для jQuery) и с lang=«html» для html.
Укажу на несколько неточностей.
>> А если нам нужно добавить еще один класс для каждого элемента?
Можно писать несколько классов через пробел: <div class=«first second third»>
>> Иногда используют атрибут ‘rel’, но его можно использовать только для ссылок, хотя я видел и у других элементов.
Атрибут rel ещё чаще используют у тегов link. А вообще браузеры поддерживают абсолютно кастомные атрибуты, включая работу с ними через getAttribute и setAttribute (именно поэтому старые браузеры поддерживают data-*), просто rel валидный.
>> Она позволяет привязывать данные к DOM-элементам, а не к jQuery объектам.
Функция jQuery.data работает не с DOM-элементами, а с абсолютно любыми объектами.
И ещё. Данное замечание в корне неверно, т.к. внутри jQuery-объекта лежит как раз DOM-элемент (или несколько). Его легко можно получить так: $('#element')[0] (соответственно, получит первый элемент). И $().data работает, если не ошибаюсь, именно с $.data.
В общем, похоже, они стараются следить и за мелочами тоже — в отличие от остальных.
А вообще к вашим услугам Mate или Gnome3 с MGSE.
P.S. Про классы. В jQuery для проверки существования класса есть hasClass.
Внутри jQuery есть некое хранилище, которое хранит сам элемент и все его ключи-значения. Оно никак не связано с data-атрибутами, $().data-функция сама проверяет элемент на data-атрибуты.
Вот для справки аналог:
Для html поменяйте здесь javascript на html соответственно.
Укажу на несколько неточностей.
>> А если нам нужно добавить еще один класс для каждого элемента?
Можно писать несколько классов через пробел: <div class=«first second third»>
>> Иногда используют атрибут ‘rel’, но его можно использовать только для ссылок, хотя я видел и у других элементов.
Атрибут rel ещё чаще используют у тегов link. А вообще браузеры поддерживают абсолютно кастомные атрибуты, включая работу с ними через getAttribute и setAttribute (именно поэтому старые браузеры поддерживают data-*), просто rel валидный.
>> Она позволяет привязывать данные к DOM-элементам, а не к jQuery объектам.
Функция jQuery.data работает не с DOM-элементами, а с абсолютно любыми объектами.
И ещё. Данное замечание в корне неверно, т.к. внутри jQuery-объекта лежит как раз DOM-элемент (или несколько). Его легко можно получить так: $('#element')[0] (соответственно, получит первый элемент). И $().data работает, если не ошибаюсь, именно с $.data.
И про виртуалку:
www.xakep.ru/post/54463/default.asp