Подскажите, пожалуйста, может есть книга какая, или ресурс, где была бы собрана воедино вся информация (ну вернее как можно больше) по написанию кроссбраузерного JS. А то все, что нахожу, как бы гордо себя ни позиционировало — обычно очередной копипаст одних и тех же «трюков». Причем интересуют материалы не по JS в целом, а именно те материалы, где рассказывается, как в IE делать нельзя, а как делать можно только в IE :)
на javascript.ru (справа) весьма прилинчый учебник, есть описания важным моментов именно по кроссбраузерности. Например, как кроссбраузерно вешать события, расписан джекверевский domReady и прочие интересные вещи.
Хм, ну на сколько я знаю целой книги посвященной именно проблемам верстки под IE — нет. Хотя есть книга «PPK on Javascript» — она посвящена написанию кроссбраузерного кода. Ну и конечно сам сайт Петера Пола Коха quirksmode.org, на котором, в принципе, вы найдете всю ту же информацию что и в книге.
Спасибо, но по первой ссылке я нашел лишь таблицу совместимости браузеров (вернее, браузеров и различных CSS/DOM возможностей), а по второй — уже видел все эти трюки — их копируют все, кому не лень… :(
Мне бы что-нибудь с примерами типа такого:
Вставка тега style с содержимым в документ:
var isIE = ! -[1,];
var cssContents = 'body{background-color:#ccc;}';
var css = document.createElement('style');
css.setAttribute('type', 'text/css');
if (isIE) css.styleSheet.cssText = cssContents;
else css.appendChild(document.createTextNode(cssContents));
Вернее, не с самими примерами, а с их разъяснением, почему css.styleSheet.cssText = cssContents;
отработает лишь в IE, и почему лишь в IE нельзя использовать appendChild() к тегу style?
Жаль. Но странно это — проблемы, с которыми я недавно начал разбираться (раньше я писал в основном лишь серверную часть приложений, а теперь приходится и с клиентской активно работать), люди решали на протяжении нескольких лет (когда там IE-6 был выпущен?), а систематизировать материалы по его особенностям никто не взялся…
Очень надеюсь все-таки найти что-нибудь…
MSDN и читаю сейчас. Но там все сильно перемешано и пока что мне с трудом удается найти какую-то логику последовательности записей… Хотя это документация к IE6, чему я удивляюсь… :)
Фреймворки я бы с радостью использовал, но в контексте текущей задачи писать нужно на pure JS и чтобы было кроссбраузерно вплоть до IE6. :(
во-первых, не знаю. Я, повторюсь, никогда не писал JS ориентируясь на IE-6, поэтому и не проверял. Может, поддерживает.
Во-вторых, как я писал уже, мне в силу специфики задачи нужно написать код на чистом JS.
Я разрабатываю тизерную сеть.
Javascript, который я пишу, будет вставляться на другие сайты и не факт, что там будет JQuery и не будет еще чего-нибудь. А с учетом того, что тизерный блок должен грузиться в предельно короткий срок, подгружать JQuery откуда бы то ни было, или вставлять со своим кодом, я не считаю возможным.
какого-то единого ресурса не встречал, но и если бы он был, то, при малейшем соприкосновении с dom'ом, кол-во мелкобагов у ие зашкаливает… в чистом js из багов навскидку вспомню только создание переменной b в конструкции a = function b() {}, если не считать багом поддержку лишь третьей (не пятой) редакции emca :) т.е. если мы гововим о чистом скрипте, то с багами шибко сталкиваться не придется (достаточно держать под рукой оглавление справочника), а если мы говорим о dom'е — никаких справочников не хватит. посоветую я, может это и банально, visual studio в качестве отладчика, ну и запастись терпением в поисках обходных маршрутов.
javascript вообще великолепно работает во всех браузерах.
ВО ВСЕХ.
Это вам не css и не верстка где возможны любые глюки.
В ИЕ есть только два «популярных» момента — eventы и ajax — обе решаются один раз и на всегда в 10 строчек. Ну и операции со строками и сорты разные. Которые просто, при неакуратном обращении, тормозят.
А вы когда-нибудь думали про javascript под… Хром?
Вот кто шаманит так это он — теряет порядок элементов и оверрайдит некоторые поля неких элементов.
Например name у класса( особенно этим страдает mootools, Потому что в name у него будет имя функции конструктора класса).
Попробуйте, не глядя в код, приведенный мною выше в качестве примера, добавить Javascript'ом тег style и по ходу выполнения кода вставлять в этот тег разные стили. В IE-6, 7, разумеется.
динамически создаваемые css каскады конечно сильная чтука, и я могу назвать пару примеров где ее наверное можно использовать.
Только вот чистосердечно не понимаю — нахера?
К тому же это вызовет полной reflow всей теоретически затронутой ветки.
тогда покопаем ради интереса. Даже стало интересно где вам такое вот шаманство понадобилось.
Но что смешно — в хроме( да, опять он ) — такие же грабли. Он еще умеет просто тупо игнорировать динамически подключенный статический css файл.