Страницы: 1
По совету Ragnaar-a открываю тему поддерки javascript-ов Gecko браузерами.
2Ragnaar Я так и не понял разницы между javascript-ами и jscript-ами поэтому извиняюсь если путаю ети понятия.
Интернет предназначен не только для пользователей Windows и IE. Хотя некоторые сайты какбуд-то написаны именно для них.
Подобная ситуация и с моим сайтом. До того момента как я перешел на FireFox я и не подозревал, что корректно он будет работать только под IE, Maxthon-ом и Оперой. (http://bluefireland.narod.ru/)
(в FF не передается обращение на мои обработчики событий onClick, onLoad, onBlur ...)
Суть вопроса заключается в том, какие функции javasript (jscrpt) можно использовать при написании сайтов?
(Чтобы они корректно работали во всех браузерах).
Или может есть какое-нибудь расширение, которое решает данную проблему?
Отсутствует
JScript - это язык Майкрософта. Стандарты написаны про JavaScript. Главное что нужно знать - нельзя использовать document.all для обращения ко всем объектам. Лучше определить функцию, выдающую ссылку на объект, и вызывать ее.
Например, так:
function getElById(elId) { if(document.getElementById) {return document.getElementById(elId);} else if(document.all) {return document.all[elId];} else {return null;} } /* тут какой-то код */ function someFunction(var1,par2,val3,per4,arr5,llame6) //Это какая-то функция { /* Снова какой-то код */ var strangeElement=getElById('strange01'); strangeElement.style.display='block'; /* ... и так далее */ }
Отсутствует
) Спасибо всем. В особенности Ragnaar-у. (Фраза о том что "это в !Gecko не работают javascript-ы?" очень помогла)
Разабрался и за сегоднящний день переписал сайт. Теперь его можно просматривать наверное в любом браузере.
Теперь возникли такие вопросы:
* - как закрыть/удалить эту тему?
* - есть ли и если есть где можно взять код кнопочки файерфокса или этого сайта? (В качестве благодарности хочу ее (кнопку) разместить у себя на сайте)
Отсутствует
Al_H, а к чему функция getElById? Ведь getElementById везде корректно обрабатывается...
...она старалась, чтобы я больше времени проводил в разных пионерлагерях и группах продлённого дня - кстати сказать, удивительную красоту последнего словосочетания я вижу только сейчас. (c) Виктор Пелевин
Отсутствует
ViRUS
Если я правильно понял, то для обхода Осла версий ниже 5.5...
Тогда уж ниже 5.0. А смысл? IE4 такой динозавр, что равняться на него смысла не вижу...
...она старалась, чтобы я больше времени проводил в разных пионерлагерях и группах продлённого дня - кстати сказать, удивительную красоту последнего словосочетания я вижу только сейчас. (c) Виктор Пелевин
Отсутствует
Athathoth
Это старинный северный обычай. Дабы почтить духов Последней Мили и злого демона Аксесси-Били-Ти, который терзает по ночам замеченных в греховной неполиткорректности, еще наши далекие предки включали поддержку одновременно document.all и document.getElementById в свои скрипты. Затем они начищали скрипты Дебаггерным жиром и шлифовали мелким валидатором. И только после этого, сделав должные священные жесты, кормили скриптом священного зверя Эф Тэ Пэ.
К сказанному хочется добавить, что нам это ничего не стоит, а неучтенному нами браузеру будет приятно. Также как нам ничего не стоит добавить комментарий внутрь тэга script. Вроде и простое действие - а насколько облегчает совесть. (Все же IE <5 остается IE, а на данный момент совокупность всех IE составляет большинство браузеров, пусть даже эти конкретные версии непопулярны, и прежде всего IE отличается от других браузеров тем, что в Windows он идет по умолчанию, и им пользуется тот, кто не хочет ничего себе ставить лишнего, раз и так работает, пока не переставит Windows - поведение очень типичное.)
Отсутствует
Спасибо всем. В особенности Ragnaar-у
Не за что
* - как закрыть/удалить эту тему?
Зачем? Пускай, остается в назидание потомкам
* - есть ли и если есть где можно взять код кнопочки файерфокса или этого сайта? (В качестве благодарности хочу ее (кнопку) разместить у себя на сайте)
Спасибо. Кнопки проекта есть тут http://www.mozilla.ru/contribute/buttons.html
Отсутствует
Al_H
Да ладно, для чего делать лишние движения и писать код для совместимости с IE 4, доля которого давно уже меньше 0,1%? К тому же далеко не факт, что 4-й осел поймет все остальное - у него ведь проблем с JS, CSS и HTML еще больше, чем у 5-го.
Отсутствует
Да ладно, для чего делать лишние движения
Вот Вы же сейчас сделали лишнее движение, и набрали даже больше символов, но не для совместимости.
Еще раз повторяю, это древний обычай, чтобы умилостивить злобных духов. В принципе, с точки зрения совместимости, не нужно писать ни DOCTYPE, ни атрибуты type и language в тэге script.
Поправка - так делают даже на крупных ресурсах, более того, с точки зрения многих веб-мастеров как раз отказываться от document.all нет смысла - А чё, Опера поддерживает, Експлорер тоже, а Файрфокс пока даже меньше 30% рынка, у меня и знакомых нет, на ём сидящих. И смело пишет document.all. Так же с точки зрения совместимости, и даже валидаторов, писать font-family: Verdana, Lucida, Arial, Helvetica, sans-serif; font-size: 11px; совершенно не обязательно, достаточно font-family: Verdana;. Но я так пишу, и мои сайты автоматически нормально смотрятся под Линуксом на Конквероре и Файрфоксе, и под MacOSX на Сафари и ИЕ 5.2, несмотря на то что я ни минуты не потратил на адаптирование под Сафари, а вот некоторые другие сайты показываются слишком мелким шрифтом, либо кракозябрами. А в процентах по России эти Маковцы даже в 5% не попадают.
Еще одна поправка: это просто дань уважения и хороший обычай, и кода даополнительного не так уж много - это не разворачивающиеся трехуровневые меню совместимо с IE4.0 и Netscape Communicator 4.05 писать. Но для малопопулярного ресурса каждый человек на счету, а для популярного эти 5% да 0.5% вырастают в тысячи людей. А для солидного ресурса это вопрос уровня.
И еще одна поправка: Вам лично можно не писать document.all. И никто даже не заметит (наверное).
Отсутствует
Понимаете, я в свое время довольно долго был тем самым из 1% или 5%. Если бы не драйверы, мог бы до сих пор, может быть, под Win95 сидеть, а там IE4.0. Сейчас уже IE5.0 потихоньку уступает 6.0, но пока в стране есть Win2000, IE5.0 нужно учитывать. Кроме того, это попытка рассчитывать на браузеры, которых я не знаю. А ну как сказали бы в свое время мастера моих любимых сайтов, что Феникс только-только появился, а Мозиллу мало кто знает, и что, мне бы пришлось ИЕ открывать? Думаю, лениво бы стало. А представьте через год кто-то решит, что все не обновившиеся до IE7 просто консерваторы замшелые?
По правде говоря, мне, например, просто везет, что браузер, который мне удобен, по совместительству еще и достаточно популярен.
А вот когда-нибудь явятся духи зверски замученных браузеров, или окажется, что около 28% в мире составляют браузеры с нормальной поддержкой HTML 3.2 и JavaScript 1.1, и разрешением 320x320... Впрочем, что же это я, добрее надо быть.
Отсутствует
Al_H
В принципе, с точки зрения совместимости, не нужно писать ни DOCTYPE, ни атрибуты type и language в тэге script.
Зато с точки зрения валидности кода все это надо (кроме, разве что, language). А DOCTYPE так он еще и влияет на обработку страниц браузером, даже в IE6.
Потом, я не говорю, что от поддержки IE5 надо отказываться - все еще существенная доля (кстати, примерно такая же как у FF или у O) пользователей им еще пользуются. А вот у IE 4 доля 0.1962% - так для чего городить огород, особенно с упором на то, что одно лишь использование document.all далеко не гарантирует того, что код будет правильно воспринят этим динозавром? Загонять себя в рамки возможностей IE4? А есть еще и NN 4, как было верно подмечено. У него тоже "популярность" в том же районе - 0.1139% (все данные со спайлога за последний месяц). И чего теперь? Имхо, время от времени надо пересматривать "глубину" поддерживаемых программ. Года 3 назад 4-е версии я еще брал в расчет, и имел большую головную боль (особенно из-за "3-го пути" - NN). Но сейчас это, имхо, уже не актуально - лучше писать по стандартам, что дает возможность надеятся, что с выходом новых версий срочно переписвать уже ничего не придется.
Отсутствует
Но сейчас это, имхо, уже не актуально - лучше писать по стандартам, что дает возможность надеятся, что с выходом новых версий срочно переписвать уже ничего не придется.
Ага-ага-ага. А теперь два вопроса.
Первый - какой реальный выигрыш Вам даст стирание из кода функции в три или в одну (как написать) строчку?
Второй - Вы наверняка встречали сайты, написанные строго по стандартам, какой процент из них корректно работает в современных браузерах? Хочется напомнить, что DOM1-2, к которыму принадлежит getElementById, содержит массу полезных функций, из которых все не поддерживает ни один браузер, и уж тем более IE, у которого в среднем по миру 88-90% на нетехнических сайтах. Значит, либо пишем .innerHTML, который к стандартам не имеет отношения, либо - неуклюжие конструкции в стиле DOM... но не выходя за пределы тех крох, которые уже в IE5.x-6.x работают. Ладно, оставим DOM. Часто есть необходимость обращаться к конкретным элементам страницы. Довольно удобный способ - XPath, там можно эмулировать некоторые селекторы CSS или даже искать по таким критериям, каких и на пыльных чердаках CSS3 не сыщешь. А, IE не поддерживает. Ну ладно. Кстати, о совместимости. Говорят, IE7 поддерживает прозрачность в png САМ, то есть без хитрых хаков и управляющих файлов. Сколько должно пройти времени, прежде чем мы сможем её применять, если учесть, что ставиться он будет только на последний сервис-пак XP, ну и так далее... Ладно, что я все про скрипты. Возьмем элементарное - верстку. Страница должна выглядеть так: Заголовок-Подзаголовок-Текст-Подзаголовок-Текст и так далее. Если нужен какой-то Nколоночный дизайн, стандарты учат не использовать таблицы, потому что таблицы - только для табличных данных. Еще раз - самый распространенный браузер у нас сейчас Microsoft Internet Explorer (у нас - не на форуме, естественно, на форуме, думаю, соотношение Файрфокс-Опера-Симанки-Мозилла Сюит-ИЕ-Флок-КМелеон). Верстать можно на стилях. Внимание, вопрос: Вы видели много сайтов, сверстанных строго по стандартам, и совместимых с ИЕ от 5.0, Файрфоксом, Оперой от 7.0 и Конкверором? А теперь - без хаков? Тем более, процентов 11 хаков либо не проходят валидаторы, либо представляют собою дикие вне-CSSные конструкции. То есть мы приходим к тому, что нужно 1) писать кросс-браузерный код и 2) по стандартам, то есть прежде всего чтоб работало, а стандарты там рядом по счастливой случайности.
Да, и еще один вопрос. Вы можете гарантировать, что каждый конкретный современный браузер будет держать getElementById? А для сотовых? А на грядущем карманном Линуксе? А на индийской операционке? А встроенный на популярных в будущем телефонах Pandoid. Конечно, концепция будущеупорности содержит противоречие уже сама по себе, но какой-то компромисс нужно соблюдать, а иногда это значит использовать и старые технологии тоже. Кстати, Вы помните, начиная с какой версии IE for MacOS поддерживал адресацию через getElementById?
Если на все эти вопросы ответы положительные, то есть написать функцию из одной строчки - очень тяжелый труд, сайты без хаков и по стандартам делаются совместимыми любые и так далее, будем считать, что это просто дань уважения тому мне, который сидел по Communicator 4.7, а затем под Mozilla 0.8-0.9, когда Релиз казался чем-то очень далеким, и к тому же имя функции короче чем getElementById.
Отсутствует
Вы можете гарантировать, что каждый конкретный современный браузер будет держать getElementById?
Нет. Равно как и то, что document.all спасет в этом случае.
Кстати, Вы помните, начиная с какой версии IE for MacOS поддерживал адресацию через getElementById?
4.5 вроде.
Если на все эти вопросы ответы положительные, то есть написать функцию из одной строчки - очень тяжелый труд, сайты без хаков и по стандартам делаются совместимыми любые и так далее, будем считать, что это просто дань уважения тому мне, который сидел по Communicator 4.7, а затем под Mozilla 0.8-0.9, когда Релиз казался чем-то очень далеким, и к тому же имя функции короче чем getElementById.
Хорошо, но тот вы (или тот я, который тоже довольно долго сидел под NN 4.7.x, а затем пользовался ранними мозиллами), все же перешли на более поздние мозиллы (вариант: оперы, конкероры, сафари и т.п.)?
Вот, скжем, вчера подключал к инету чела с компом, на котором были оригинальные винды-98 (с ИЕ 4.0). Этот браузер использовался только 2 раза: чтоб зайти на локальный сайт и слить дистрибутив сначала фокса, а потом - оперы (там еще и процессор был Ciryx M2, видать, разархивировать инсталлятор FF из 7-zip ему не по зубам, пришлось ставить О). После чего все ярлыки на ИЕ были выкинуты. Все. Что мешает другим обновить браузер? Всех дел на пару минут даже на таком дохлом компе.
Отсутствует
Равно как и то, что document.all спасет в этом случае.
Поэтому от возможности спасения мы отказываемся? Даже если учесть, что мозги создателей новых браузеров как правило работают в сторону уже пройденных дорог, то есть скорее они реализуют либо document.all, либо DOM, а не будут изобретать свое retreiveObjectReferenceFrom=>StringId("some_id")?
Что мешает другим обновить браузер?
Я не буду говорить от себя. Мне противен ИЕ, при его дырявости я не могу считать его серьезным браузером, так что для меня естественное поведение раздобыть Файрфокс и ходить им. Но были исследования, по результатам которых были написаны статьи. Одно из эмпирических правил получилось такое:
1. Разработчик должен исходить из того, что
Пользователь никогда ничего себе не ставит и не обновляет до тех пор, пока есть хоть какая-то возможность работать с уже существующим или обходиться без него.
Иллюстрация: если у целевой аудитории Win >=98, то мы должны исходить из того, что у них у всех IE >=5.0, а не из того, что все обновились до 6.0.
Еще раз: большинство никогда ничего не ставит
Другой полученный закон гласит:
2. Разработчик должен исходить из того, что
Пользователь ничего не настраивает, кроме тех настроек, без которых ничего не работает совсем. Если настройки сложные, он в них разбираться не будет.
Пример: на почтовом клиенте, как правило, настроен адрес и пароль почтового ящика.
Из всего этого не следует, что пользователь идиот. Просто большинству пользователей все это не нужно и неинтересно. Он специалист по драгоценным камням, профессиональный волшебник, первоклассный бухгалтер, гениальный мусорщик, приличный художник, программист на языке ErrorTalk, да кто угодно еще, и от компьютера ему нужно то же, что электрику от отвертки - чтобы была крепкой и при развинщивании щитка током не била, то есть ручка изолирующая должна быть.
Когда я ставлю программу, обычно обхожу ее настройки по периметру, и кое-что меняю сразу. Таких много?
Отсутствует
Страницы: 1