Jump to content
  • 0

Вариант навигации.


Dimitry Wolotko
 Share

Question

Сейчас сижу с больной головой (болею), думаю над навигацией в админке тех сайтов, что я сейчас делаю (несколько сайтов, админка одна).

Поделился со знакомцем мыслями - он мне сразу кинул (http://www.artlebedev.ru/tools/technogrette/js/tabsheets/) - идея пришлась по вкусу, но код JS раздут - ужас просто, написал свой, посмотрите, мб я что - то из функционала пропустил?

PS - мо? чудо с помощью php вполне можно и динамическим сделать.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<style>
.mon2 {color:black;}
.mon2 {color:red;}
</style>
</head>

<body>


<script type="text/javascript" language="JavaScript">
function so2( objName1, objName2, objName3 )
{
oObj1 = document.getElementById( objName1 );
oObj2 = document.getElementById( objName2 );
oObj3 = document.getElementById( objName3 );
oObj1c = document.getElementById( objName1 + "c" );
oObj2c = document.getElementById( objName2 + "c" );
oObj3c = document.getElementById( objName3 + "c" );
oObj1.style.display = "block";
oObj1c.className = "mon3";
oObj2.style.display = "none";
oObj2c.className = "mon2";
oObj3.style.display = "none";
oObj3c.className = "mon2";
}
</script>

<div>
<span class="mon3" id="date2c" onclick='so2( "date2", "date3", "date4" );'>Вкладка 1 |</span>
<span class="mon2" id="date3c" onclick='so2( "date3", "date4", "date2" );'>Вкладка 2 |</span>
<span class="mon2" id="date4c" onclick='so2( "date4", "date2", "date3" );'>Вкладка 3 |</span>
</div>
<div style="display: block;" id="date2">
Содержимое вкладки номер один:

<table border="1">
<tr>
<td>table data</td>
<td>table data</td>

<td>table data</td>
</tr>
<tr>
<td>table data</td>
<td>table data</td>
<td>table data</td>
</tr>
</table>
</div>
<div style="display: none;" id="date3">
Содержимое вкладки номер два:

Аниме убивает ваш мозг!

</div>
<div style="display: none;" id="date4">
Содержимое вкладки номер три:

<h1>труляля</h1>
<h2>труляля</h2>
<h3>труляля</h3>
<h4>труляля</h4>
<h5>труляля</h5>
<h6>труляля</h6>
</div>

</body>
</html>

Link to comment
Share on other sites

  • Answers 154
  • Created
  • Last Reply

Top Posters For This Question

Recommended Posts

  • 0
Я не могу, веселенькая темка.

Точно, сейчас продолжим веселье.

У меня стоит задача, при возникновении ошибки не генерировать никаких сообщений об ошибках.

Наконец-то вижу признание того, что и Вы решаете частную задачу.

Мой код с этим справляется? Да/Нет?

Нет. В FF, например, у меня открывался Firebug, несмотря на наличие конструкции try в вашем коде.

Я не думал что все настолько плохо.

Плохо, очень плохо! Взять хотя бы:

/s+/gi

С какой целью регвыр модифицирован таким образом, чтобы поиск совпадения был регистронезависимым?

Вы ищите совпадения как с "прописным" пробелом, так и со "строчным"?

Возможно Вы перепутали диалекты? Но тогда расскажите, в каком из языков программирования пробел является буквой (letter)?

Но, очень похоже на то, что вы как раз не работали.

Взаимное наблюдение.

Link to comment
Share on other sites

  • 0
С какой целью регвыр модифицирован таким образом, чтобы поиск совпадения был регистронезависимым?

Вашу бы дотошность да в другое бы русло. Это серьезно влияет на работоспособность скрипта?

Вы бы лучше подумали над тем, как улучшить масштабируемость вашего скрипта.

Link to comment
Share on other sites

  • 0
Вашу бы дотошность да в другое бы русло.

Это не дотошность. Для меня построчное чтение кода - это единственная возможность определить уровень профессионализма писавшего.

Это серьезно влияет на работоспособность скрипта?

А это из серии "у меня никогда не возникает проблем с моим кодом". Подобное уже комментировалось Zeroglif'ом.

Вы бы лучше подумали над тем, как улучшить масштабируемость вашего скрипта.

Мне незачем это делать. И объяснения тоже уже были.

Link to comment
Share on other sites

  • 0
Это не дотошность. Для меня построчное чтение кода - это единственная возможность определить уровень профессионализма писавшего.

Знание языка и умение его применять - разные вещи. Можно быть очень дотошным, но писать ужасный код с практической точки зрения.

Можно закрывать глаза на мелочи и при этом делать более сложные вещи. В хорошем программисте не главное знание языка, важны категории, которыми он мыслит. Важны решения, которые он изобретает, и как именно решает задачи.

Наши скрипты как раз разнятся уровнями абстракций. Ваш уровень - решение задачи в лоб, зачастую даже не вчитываясь в задание. Как проще.

А я решал задачу с учетом всех факторов, которые описаны в задании, и вдобавок еще тех факторов, которые там не описаны. Вы считаете себя программистом высокого уровня, который знает много всего про язык, на котором вы пишете, но пишете сферических коней в вакууме.

Я себя не считаю гениальным программистом, я всего лишь пытался показать, что не всегда ортодокальное мышление дает нужные дивиденты.

Link to comment
Share on other sites

  • 0

Даже не буду отвечать. Переписываете одно и тоже. А на вопросы не отвечаете. Что, стыдно комментировать ход своих мыслей вот в этом:

/s+/gi

?

И правильно, что стыдно!

Хотя я не знаю, как там у Вас с совестью...

Вон, Zeroglif преподнес Вам в подарок, да и еще "в одном флаконе" столько, что любому другому пришлось бы создать десяток тем, чтобы узнать столько нового и интересного. А "спасибо" нету.

Я, наверно, тоже перестану рассказывать Вам о ваших ошибках. Живите с ними и дальше. Вы же "опытный программист", разберетесь как-нибудь...

Link to comment
Share on other sites

  • 0
И правильно, что стыдно!

Хотя я не знаю, как там у Вас с совестью...

Стыдно? Отнюдь! Мне не стыдно чего-то не знать. Или чего-то не уметь. И за свои ошибки не стыдно.

Если я скажу, что это Copy/Paste, вам станет от этого лучше? Я думаю, что это будет еще один виток флейма, направленного на то, чтобы доказать мне, что я не знаю JS.

Данный спор с вашей с Zeroglif'ом стороны идет на уровне мелочей. Вы не видите целого, вы смотрите в первую очередь на мелочи. Я же смотрю на общие вещи, которые куда более полезные, чем присутствие того же ключа i в регекспе. Исправить одну букву в коде просто. А вот исправить костность мышления - не очень.

От zeroglif'а я не дождался ни одного пояснения, ни одной строчки кода. Соответственно и отношение к его словам соответствующее - теоретик.

А качество вашей работы я увидел. Может и написано без ошибок, зато одна сплошная ошибка с практической точки зрения. Мало того, что вы не внимательно прочитали задание, но еще и реализовали его в лоб. Мои ошибки просто исправить ( но я это не буду делать по некоторым причинам ), ваши ошибки в алгоритмике вы не сможете исправить быстро, потому что вы привыкли так мыслить, такими категориями.

Так что, если вы вернетесь к началу разговора, то поймете о чем именно я сказал в своем посте под номером 8.

Спасибо я могу сказать, только за одну вещь - за изменения в требованиях к именам переменных.

Остальное все- мертвый груз.

Link to comment
Share on other sites

  • 0

Надоело до чертиков наблюдать за тем, как Вы делаете хорошую мину при плохой игре.

Любой вменяемый человек уже давно бы написал: "Да, начудил - надо исправлять". Но только не Вы. Вы - полная противоположность. Все для Вас - "мертвый груз". Все также упорно продолжаете твердить самому себе: "Нет, я все-таки хорош! И скрипт мой хорош! И вообще, не понять этим мелким сошкам, как мы оба хороши!".

Разобрались с вашим скриптом - он оказался совсем не той обещанной "дамой, приятной во всех отношениях". Теперь Вы решили снова попытать счастья на поприще "алгоритмики". Что тут еще можно добавить? Я уже писал, что Вы не ясновидящий. Поэтому утверждать:

...ваши ошибки в алгоритмике вы не сможете исправить быстро, потому что вы привыкли так мыслить, такими категориями.

столь же бессмысленно, как и утверждать, что Вы профессионал.

А что, разве не так? Какой Вы, к черту, профессионал, если даже Copy/Paste у Вас через пень-колоду?

P.S. Научитесь говорить спасибо в нужный момент, а не тогда, когда человек уже махнул на Вас рукой и поставил жирный крест...

P.P.S. Забыл прокомментировать это:

Стыдно? Отнюдь! Мне не стыдно чего-то не знать.

Стыдно должно было быть за то, что "раструбили" о том, что ваш скрипт 100%-ый во всех отношениях, а оказалось все далеко не так. Оказалось, что полно детских ошибок.

Кстати, не удивляйтесь, что отголоском на ваше "Бугагага", неосмотрительно написанное в адрес вашего собеседника, теперь на форумах будет встречаться ваше же /s+/gi. Просто эта ваша ошибка в моем конкурсе на самую смешную ошибку заняла первое место. Очень уж мне понравился поиск "прописных и строчных" пробелов.

Link to comment
Share on other sites

  • 0
Стыдно должно было быть за то, что "раструбили" о том, что ваш скрипт 100%-ый во всех отношениях, а оказалось все далеко не так. Оказалось, что полно детских ошибок.

Ай-я-яй как нехорошо. Когда читаете посты, внимательно их читайте. Я написал не про то, что мой скрипт 100%-ый во всех отношениях, а то, что задание выполнено на 100%. Т.е. я выполнил оба условия, которые ставились в задаче. А вы, многоуважаемый "профессионал", даже не потрудились внимательно прочитать задание. А теперь доказываете мне то, чего я не говорил. Внимательнее надо быть.

И я не говорил, что скрипт мой хорош. Я могу с уверенностью сказать, что он куда масштабируемее вашего. Отрицать это глупо. А вы с упорством хотите мне доказать, что я не умею программировать, что делаю смешные ошибки, что я не профессионал. Мне смешно. Вы написали какого-то сферического коня в вакууме, и хотите, чтобы ему дали приз за самый лучший код? Не надо быть ясновидящим, чтобы понимать, что вы мыслите теми категориями, которые отражены в вашем скрипте. Иначе бы вы написали совершенно другой код.

Еще раз повторю, профессионал это не тот, кто умеет писать без ошибок (кстати, а что есть ошибка?), а тот, кто умеет задачу решить наилучшим образом и на все 100%, а не только часть.

Link to comment
Share on other sites

  • 0
От zeroglif'а я не дождался ни одного пояснения

Ну, ладно, вам не стыдно за свои ошибки, за незнание, но неужели и врать тоже не стыдно? Если я действительно ничего в этой ветке не пояснял, то что же тогда вам пояснить кроме того, что уже вроде как проехали?

Link to comment
Share on other sites

  • 0
Я могу с уверенностью сказать, что он куда масштабируемее вашего. Отрицать это глупо.

А кто отрицает? Я уже несколько раз написал, что мой вариант - это НАКОЛЕНОЧНОЕ РЕШЕНИЕ.

Вы мне хотите польстить тем, что сравниваете мой черновик со своим вымученным решением?

Да, между прочим, уже ясно, что Вы сюда "вывезли" давным-давно написанный вариант.

А вы с упорством хотите мне доказать, что я не умею программировать, что делаю смешные ошибки, что я не профессионал. Мне смешно.

Наконец-то и Вам смешно. Значит не все было бесполезным.

Вы написали какого-то сферического коня в вакууме...

Что это за конь, который Вас преследует? Что за галлюцинации? Вы там, часом, ничем не злоупотребляете?

Не надо быть ясновидящим, чтобы понимать, что вы мыслите теми категориями, которые отражены в вашем скрипте. Иначе бы вы написали совершенно другой код.

А ведь правда ваша! Не надо быть ясновидящим, чтобы понять - потратил бы я времени чуть больше, код мог бы быть совершенно другим.

Еще раз повторю, профессионал это не тот, кто умеет писать без ошибок (кстати, а что есть ошибка?), а тот, кто умеет задачу решить наилучшим образом и на все 100%, а не только часть.

Опять 100%! Вы неисправимы!

Link to comment
Share on other sites

  • 0
А кто отрицает? Я уже несколько раз написал, что мой вариант - это НАКОЛЕНОЧНОЕ РЕШЕНИЕ.

А вы другие писать умеете? Почему сразу не написали? Потому что мы не из тех, кто пишет сразу нормально?

Код мной был написан с нуля. За исключением некоторых функций.

Link to comment
Share on other sites

  • 0
От zeroglif'а я не дождался ни одного пояснения

Ну, ладно, вам не стыдно за свои ошибки, за незнание, но неужели и врать тоже не стыдно? Если я действительно ничего в этой ветке не пояснял, то что же тогда вам пояснить кроме того, что уже вроде как проехали?

Вы ответьте сначала на вопросы, которые я задавал. Желательно в виде примеров, чтобы доказать свои слова. Процитировать или сами из моих постов вопросы найдете?

И расскажите мне, где же я вру. С цитатами из моих постов.

Link to comment
Share on other sites

  • 0

Врань? - это:

От zeroglif'а я не дождался ни одного пояснения

Я вам не пояснил, в ч?м опасность применения метасимвола b для отсечения слов?

Я вам не пояснил, в ч?м опасность do-while при работе с "коллекциями"?

Я вам не пояснил с кодом вместе, что скорость циклов зависит от техники?

Я вам не пояснил с кодом вместе, что инлайн обработчики несут на борту "custom scope chain"?

... и так далее

Вы, сударь, мало того, что неумело, но агрессивно отстаиваете свой плохо написанный код, вы ещ? и банальный враль. Прич?м не краснеющий.

Удачи.

p.s. что конкретно вам нужно пояснить ЕЩ??

Link to comment
Share on other sites

  • 0
А вы другие писать умеете?

Учусь, учусь, батенька. И, надеюсь, всю жизнь буду учиться.

Почему сразу не написали? Потому что мы не из тех, кто пишет сразу нормально?

Нормально - не нормально, не Вам судить. А вот почему не предпринял попытки - так это потому, что ситуация не располагает.

Код мной был написан с нуля. За исключением некоторых функций.

Что ж, поздравляю!

Link to comment
Share on other sites

  • 0
p.s. что конкретно вам нужно пояснить ЕЩ??

Похоже у вас тоже проблема с внимательностью.

- "неявное заведение переменных" - прямая дорога к багам IE (и частично к багам Opera);

Покажите мне хоть один код, который приведет к этой прямой дороге. Пока что я не увидел нормального обоснования, почему так делать нельзя.

- инлайн обработчики элементарно вызываются без бажных и непопулярных dispatchEvent и т.п.;

Опять красивые слова, но доказательства бажности диспатчЭвента я не увидел.

- блоки try-catch при тотальном отсутствии проверок и контроля за скриптом - признак непрофессионализма;

И в какой это книжке написано? Там не ваше авторство случайно?

Link to comment
Share on other sites

  • 0
Нормально - не нормально, не Вам судить. А вот почему не предпринял попытки - так это потому, что ситуация не располагает.

Ну почему же не мне судить? Очень могу даже вполне судить. Ситуация как раз вполне рабочая, дали задание, его надо решить. Решить эффективно и в полном объеме. Ход мыслей вполне себе понятный, как бы вы решали, на основании каких методов.

Link to comment
Share on other sites

  • 0
Ну почему же не мне судить? Очень могу даже вполне судить.

"Очень могу даже вполне"? Мы ведь разобрались, что Вы как-раз наоборот не "очень-то могу" и не совсем "вполне" в этих вопросах.

Ситуация как раз вполне рабочая, дали задание, его надо решить.

"Дали задание"? :)

Как все запущено-то...

Link to comment
Share on other sites

  • 0
Покажите мне хоть один код, который приведет к этой прямой дороге. Пока что я не увидел нормального обоснования, почему так делать нельзя.

Надо же вс?-таки изучать предмет, вот специально подобранные ссылки. Я только в этом году раз пять на различных форумах отвечал людям, которые попадают на IE-баги с конфликтующими свойствами window. Вы, вместо того, чтобы функции или переменные объявлять, записываете выражения "идентификатор=функция", это не только "bad practice", о которой говорится во всех мыслимых и немыслимых javascript-доках, но и путь, который при стечении определ?нных обстоятельств может привести к трудноуловимой ошибке, пример:

<html>
<body>
<span id="test">Test page</span>
<div id="tabWrapper">
<div id="tabSwitch"></div>
<div class="tab">
<a href="#">Tab 1</a>
Tab 1 Content
</div>
<div class="tab">
<a href="#">Tab 1</a>
Tab 1 Content
</div>
<div class="tab">
<a href="#">Tab 1</a>
Tab 1 Content
</div>
</div>
<script type="text/javascript">
/*
ошибка в IE (конфликт им?н)
добавьте var, чтобы увидеть разницу
*/
test = 0;
tabSwitch = function () { alert(test); };
tabSwitch();
</script>
</body>
</html>

Опять красивые слова, но доказательства бажности диспатчЭвента я не увидел.

Не надо видеть, надо просто знать! За столько лет практической работы вам бы стоило давно уяснить, что "synthetic events" по определению бажные, и если нет в них острой необходимости, то шли бы они лесом. Это аксиома. Список проблем такого рода специально не веду, можете самостоятельно начать интересоваться вопросом с багзиллы и закончить гуглем. Шаткость этого дела связана со сложностью реализации, затем "synthetic events" бывает меняют свои алгоритмы в угоду борьбы с браузерными уязвимостями, сегодня событие запустилось, завтра - нет по причине приостановки некого опасного поведения. Добавьте сюда ещ? и кроссбраузерную мешанину. Я, например, не могу на 100% гарантированно ответить (сославшись на доки), будет ли отменено дефолтное действие у ссылки с помощью "return false", когда событие толкнули программно скриптом (FF насколько помню вообще не переходит по ссылке, то есть налицо отход от обычного поведения). Ваш код простой, вы не нанизываете события на ссылку, нет нужны в "физическом" клике и т.д., на ссылке висит архаичный, закал?нный в боях инлайн обработчик, который вызывается на раз безо всяких ухищрений. Это сразу же бросается в глаза - никаких препятствий к вызову нужной функции из тега и одновременно ненужная возня с dispatchEvent.

И в какой это книжке написано? Там не ваше авторство случайно?

Не читал, не знаю, в какой. Авторство книжки, которую я не читал, не мо?.

Похоже у вас тоже проблема с внимательностью.

Гы. Неужели профессиональному практикующему программисту нужно расписывать такие почти риторические вопросы, как "заводи нормально переменные" или "программмируй события при острой необходимости оунли"? Каюсь, оказалось нужно объяснять и это. Зато я не опустился до вранья про то, как я тут оказывается не дал вам ни одного пояснения. Ни одного не дал, ага. А вообще... надо было вам выдать что-нибудь более энергичное, например, "какой такой Zeroglif? не было тут такого...".

Удачи.

Link to comment
Share on other sites

  • 0
это не только "bad practice", о которой говорится во всех мыслимых и немыслимых javascript-доках,

По-моему вы перечитали мыслимых и немыслимых док.

Общался с девелоперами Mozilla. Они не понимают, почему lambda functions являются bad practice. В упор не понимают. Смотрели на меня как на идиота. Слова разных людей - это написано в доке, значит это применимо. Да, в определенных условиях может получиться и bad practice, но их же слова: "lambda function are beautiful".

Подумайте головой, как bad practice может быть то, что описано в доках?

но и путь, который при стечении определ?нных обстоятельств может привести к трудноуловимой ошибке, пример:

Ах вот оно что. Много разных слов вокруг простого бага IE, который при нормальной разработке никогда не осуществим. Этому багу уже лет 10 наверное.

Не надо видеть, надо просто знать! За столько лет практической работы вам бы стоило давно уяснить, что "synthetic events" по определению бажные, и если нет в них острой необходимости, то шли бы они лесом. Это аксиома.

Спасибо, посмеялся. Как и девелоперы Mozilla. Опять же, свелось все к простому - это есть в документации, этому посвящен ни один раздел, это можно использовать без ограничений. Ограничения только в вашей голове. И вы вбили себе это на уровне каких-то аксиом.

За три года использования диспатчей не было ни одного бага в багтрекинге, связанного с его работоспособностью. Это сотни инсталляций продукта. Ах да, для вас это табу, я забыл.

Мне вот интересно, никаких книжек вы не читали, а уже утверждаете, что

- блоки try-catch при тотальном отсутствии проверок и контроля за скриптом - признак непрофессионализма;

Получается, что это ваше личное мнение. С удовольствием его проигнорирую как и многие остальные.

Link to comment
Share on other sites

  • 0
Общался с девелоперами Mozilla. Они не понимают, почему lambda functions являются bad practice. В упор не понимают. Смотрели на меня как на идиота.

Смотрели, как на идиота? Как я их понимаю! Ну кто Вам писал, черт побери, что "lambda functions являются bad practice"?

Прям как в сказке - чем дальше, тем страшнее.

Спасибо, посмеялся. Как и девелоперы Mozilla. Опять же, свелось все к простому - это есть в документации, этому посвящен ни один раздел, это можно использовать без ограничений.

Хихикаете с девелоперами Mozilla? Хорошо. У них, значит, все сводится к простому: "есть в документации - используем без ограничений"?

Тогда спросите у них, почему в их детище вызов вот этой функции:

function s0rry_s0rr0w() {
var x = 0;
eval('function x() {}');
return [typeof x,
function () {
return typeof x;
}()
];
};

возвращает массив:

[number, function]

??? И пусть постараются увязать это с тем, что есть в их доках.

Link to comment
Share on other sites

  • 0
Общался с девелоперами Mozilla. Они не понимают, почему lambda functions являются bad practice. В упор не понимают.

C кем конкретно общались? Можете сообщить имя/ник?. Хочу сам поговорить, ни секунды не верю, что они находятся на вашем уровне, просто попытайтесь сами разобраться в том, что я вам пишу. Есть же даже пример, запускайте его в IE, думайте же наконец, что происходит, там же комментарии. Дело вовсе не lambda functions, а в НЕЯВНОМ заведении переменных, БЕЗ var перед идентификатором. Вы пишете процедурно, вообще без var, размещая скрипт где-то внутри html, засыпая window свойствами, для IE с его механизмом сбора всех идентификаторов/им?н тегов в виде свойств окна и последующей их защиты от изменений это чревато ошибками, повторюсь - только в этом году наблюдал ряд ошибок такого рода (не голословно, можете все ответы найти гуглем). Программист должен писать так, чтобы кодер не волновался по этому дурацкому поводу и выбирал нужные имена смело, без оглядки на javascript. Смотрите ещ? раз в код, сходите по указанным ссылкам. И не прислоняйте девелоперов Mz каким-то боком к своей некомпетентности.

Подумайте головой, как bad practice может быть то, что описано в доках?

Во-первых вы ничего не поняли про лямбду, когда речь шла о переменных, во-вторых, описанное в доках запросто может быть "bad practice", тут нет противоречия, наоборот, eval, with... - это вс? описано в доках, но неуместное использование осуждается. Когда уровень такого неуместного/некачественного использования зашкаливает, профессионалы и знатоки языка начинают вырабатывать рекомендации, приклеивая для удобства и доходчивости ярлык "bad practice". Иногда масштаб дурного использования настолько огромен, что разработчики сами официально ненавязчиво намекают воздержаться от дури, например, если вы загляните в сюда, то прочт?те:

For example, x = 42. This always declares a global variable and generates a strict JavaScript warning. You shouldn't use this variant.

Это открытым текстом пишет Mz специально для ньюбов - "не стоит так поступать, не надо!", хотя у них вс? намного спокойней в этом смысле, чем в JScript, с его id-багами и двухглавым глобальным объектом...

Этому багу уже лет 10 наверное.

Может 30 лет? Меня вообще это радует - сначала вы ничего вообще не понимаете, зада?те глупые вопросы, это видно, ни бэ ни мэ, но стоит только объяснить, как сразу: "А... это, это я и так знаю, ещ? с 1996 года". Раньше надо было вертеться, обнаруживая знания. Пару страниц назад.

Получается, что это ваше личное мнение. С удовольствием его проигнорирую как и многие остальные.

Игнорируйте, не обижусь, только не врите больше, что не дождались от меня ни одного пояснения. Где-то с третьего поста в ваш адрес в этой ветке я уже пишу не только для вас лично, но и для тех, кто будет читать форум. С воинствующей безграмотностью приходится воевать публично, как бы это не раздражало, миссия такая.

Тогда спросите у них, почему в их детище вызов вот этой функции...

AKS, девелоперы не при ч?м, s0rr0w не уловил идеи и спросил совершенно не про то, что ему написали, зато теперь у него за спиной в качестве неубиваемых аргументов есть:

- многолетний никому неизвестный опыт;

- куча никому неизвестных, но работающих скриптов;

- энное количество неизвестных смеющихся девелоперов Мозиллы.

C таким войском можно легко оспаривать, что земной шарик - шарик. :)

Link to comment
Share on other sites

  • 0
AKS, девелоперы не при ч?м, s0rr0w не уловил идеи и спросил совершенно не про то, что ему написали...

Это я написал по другому поводу. Они смеялиь, что фича с dispatchEvent - документированная, значит "это можно использовать без ограничений".

Вот я и предложил s0rr0w и его друзьям-девелоперам объяснить поведение, идущее вразрез с документированным...

Link to comment
Share on other sites

  • 0
За три года использования диспатчей не было ни одного бага в багтрекинге, связанного с его работоспособностью. Это сотни инсталляций продукта. Ах да, для вас это табу, я забыл.

Оторвитесь вы наконец от своего ничего мне не говорящего опыта, это не интересно, и судя по всему даже вредно. Иначе мне прид?тся писать такой же дурацкий ответ - "за 5 последних лет постоянно какие-то проблемы с программируемыми событиями". По существу же дела можно с ходу наткyться на что-то вроде:

2005 год, в результате синтезированного события объект event нес?т на борту неверные значения и т.п.

https://bugzilla.mozilla.org/show_bug.cgi?id=282266

2005 год, dispatchEvent отваливается для бедных буковок (в целях безопасности?), народ сильно возмущается

https://bugzilla.mozilla.org/show_bug.cgi?id=303713

2006 год, событие в отношении non-printing-keys нельзя синтезировать (в целях безопасности?)

https://bugzilla.mozilla.org/show_bug.cgi?id=337975

Я ещ? молчу про то, что до сих пор народ пишет и в багзиллу и не только туда, удивляясь, почему же программируемое событие не кликает ссылки, и где про это почитать. Да потому что уязвимость, мать е?. И это только один движок. Вс? это уже должно подсказывать вам, что синтетические/программируемые события - это много сложнее, чем интерактивные, они не эквивалентны, есть между ними известные и видимо ещ? неизвестные отличия, есть случаи (см. ссылки), когда движок бер?т и меняет поведение в отношении таких событий, прежде всего в целях безопасности. К тому же вс? вышеперечисленное документировано весьма скупо, без указаний на особенности/несоответствия, отсюда простой вывод - если скрипт написан таким образом, что можно не синтезировать событие, то и не нужно этого делать. Ваш скрипт именно таким вот образом и написан, от сохи, с применением легко вызываемых инлайн обработчиков. Вообще, эти контрасты в вашем скрипте веселят, легко вызываемый инлайн обработчик, с одной стороны и не в кассу синтезированный программно клик, с другой, потом, с одной стороны, вы переда?те аргументом в функцию значение this (ноду, на которой висит обработчик), с другой стороны зачем-то опять же не в кассу пишите код, сканирующий родителей на предмет наличия свойства, хотя нода вот она, вместе со своим свойством. Какое-то прям ч?рно-белое кино. Немое к тому же. Тап?р сюжет сопровождает, но лажает жутко. На крики из зала никак не реагирует. Дынц-дынц, дынц-дынц... :)

Link to comment
Share on other sites

  • 0
Программист должен писать так, чтобы кодер не волновался по этому дурацкому поводу и выбирал нужные имена смело, без оглядки на javascript. Смотрите ещ? раз в код, сходите по указанным ссылкам.

Мдааа.. Знаете в чем наше отличие? Вы слишком много уделяете мелочам внимание. Мелочам, которые при правильном подходе к разработке интерфейсных решений никогда не проявятся. Поясню почему.

1. Что с var, что без var, функции попадают в global scope chain.

2. Туда же попадают идентификаторы нод в IE.

3. Ни один нормальный, адекватный, в здравом рассудке кодер не будет называть идентификатор ноды именем getElementByClassName, matchClassName и т.д. и т.п. Мало того, при нормальном подходе к разработке именование идентификаторов, имен функций и прочего должно строиться по разным правилам. Это обязательное требование к разработке.

Скажите, баг IE проявится при таком подходе? Никогда!

С воинствующей безграмотностью приходится воевать публично, как бы это не раздражало, миссия такая.

Ах какие высокие слова. Чтобы бороться с безграмотностью недостаточно говорить с умным видом разные слова. Нужно аргументированно доказывать свою точку зрения, используя ссылки, примеры кода, указания на нормальные источники, а не бред псевдо-гуру, которые иногда делают совершенно неправильные выводы из очевидных вещей. Именно поэтому я всегда требовал от вас закрепления своих слов примерами. Но вы это успешно игнорировали в некоторых случаях.

Опять же, вернемся к нашим синтетическим эвэнтам.

Если баг 282266 и представляет потенциальный вариант возникновения ошибки, то два других бага можно пока что вообще не рассматривать багами, так как до сих пор не принята спецификация DOM Level 3, которая, собственно и описывает правильность обработки key-events. Будем равняться на драфт? Да, и применения input type=submit в качестве переключалки таба считаю полным извращением.

А я вижу, что вы так и не поняли, почему парентов надо сканировать на наличие нужного свойства. Все больше и больше убеждаюсь, что мне совершенно неинтересна будет ваша реализация табулятора.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy