Tuesday, 17. July 2007, 20:30:49
у матерых индийских аутсорсингеров появляется серьезный конкурент в праве попадать в программистские анекдоты, байки и басни... как ни прискорбно - но этими персонажами являются украинские веб-программисты, ибо такого количества багов на отечественных "мега" веб-проектах в мире надо еще поискать...проект, номер раз, про который пойдет сегодня речь - развлекательная молодежная среда
тусе.ком.уа (или Мое Тусэ понад усэ), главной фишкой которой являются обмен сообщениями в онлайне (аля айсикью) и поддержка собственной фотогалереи... как говорят, мои знакомые делал его студент КПИ... что ж если это был первый блин - то он вышел огромным комом...
почему? ну что ж тогда по пунктам...
1. Страница входа на Тусе... Непонятная желтая окантовка у кнопки войти и почему-то выделенная бледным серым цветом активная возможность "Запомнить меня" сразу наводят на мысль о, мягко сказать, неадекватности веб-программистов... нажатие клавишесочетания ктрл+ф3 только приумножает эту мысль... нет, я понимаю что при помощи таблиц удобней выстраивать элементы по странице, но использовать табличную верстку на этой странице - это кощунство... здесь же вообще нет ничего табличного...
и, ах да... ссылки
Сделать стартовой и
Добавить в избранное, как всегда в .УА, кликабельны только в Осле... других браузеров пока, наверное, еще не выпустили, как жаль...
2. А теперь перейду к собственно главному багу на сегодня для Тусэ... это невозможность юзания клавишесочетания
ктрл+энтер в браузерах отличных от Осла и Геко-ядра... и это на сервисе у которого мнгновенные сообщения - главная фишка... почему это клавишесочетание не работает? да ведь потому что, код написан корявыми руками отечественных веб-программистов...
итак, ктрл+ф3 дает нам следующий убийственный фрагмент:
function BODY_onkeypress(e)
{
var pressed=0;
var we=null;
if (window.event) we=window.event;
else if(parent && parent.event) we = parent.event;
if (we) { // IE
pressed=we.keyCode==10;
} else if(e) { // NN
pressed =
(e.which==10 && e.modifiers==2) || // NN4
(e.keyCode==0 && e.charCode==106 && e.ctrlKey) ||
(e.keyCode==13 && e.ctrlKey) // Mozilla
}
if (pressed) {
if (trimAll(document.message.msg.value).length == 0) {
alert('Введи текст сообщения!');
return false;
} else {
document.forms[0].submit();
}
}
}
document.onkeypress = BODY_onkeypress;
if (parent) parent.document.onkeypress = BODY_onkeypress;
каков разгул фантазии у товарищей программистов? да? то-то же ))) они вместо четырех строчек кода потратили на проверку условия нажатия ктрл+энтер 11 строк кода и ничего не добились... ибо код скопипащен из какого-то другого источника и в нем совершенно никто не разбирался, после того, как в уважаемом всеми Осле он успешно заработал... то, что в стране юзают и другие браузеры - никого не ебет, аудитория не пострадает, сайт тоже, рнб и дальше будет в фаворе...
а говно все в том, что работающая версия кроссбраузерного сабмиттинга по клавишесочетанию пишется считанные минуты при помощи Гугла (у меня ДжаваСкрипт забрал минут 5 не более)... и как результат везде работает и все довольны...
не верите? проверяйте:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html dir="ltr" lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Crossbrowser Ctrl+Enter</title>
<meta http-equiv="Content-Language" content="ru" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Robots" content="noindex, nofollow" />
<meta name="Author" content="Igor Davydenko" />
<meta name="Reply-To" content="info@wemakesites.org" />
<meta name="License" content="Licensed under the GNU GPL v.2.1 or later" />
<meta name="Copyleft" content="All rights are copylefted" />
<script type="text/javascript">
<!--
function validSubmit(form) {
if (typeof(form) == 'undefined' || !form) return;
var text = form.text.value;
return (text.length > 0);
}
window.onload = function() {
var form = document.getElementsByTagName('form')[0];
form.text.focus();
form.onsubmit = function() {
if (!validSubmit(this)) {
window.alert('Please, fill messages text');
this.text.focus();
return false;
}
else {
window.alert('Message sended');
return true;
}
}
form.onkeypress = function(event) {
event = (event) ? event : window.event;
if ((event.keyCode == 13 || event.keyCode == 10) && event.ctrlKey == true) {
var inputs = this.getElementsByTagName('input');
var submit = null;
for (i in inputs) {
if (inputs[i].type.toLowerCase() == 'submit') {
submit = inputs[i];
break;
}
}
if (submit) {
submit.click();
}
else {
this.submit();
}
}
}
}
-->
</script>
<style type="text/css">
<!--
body {
background-color: #fff;
}
body, input, select, textarea {
font-family: 'Georgia', serif;
font-size: 16pt;
color: #000;
}
form {
position: absolute;
width: 50%;
left: 50%;
margin-left: -25%;
border: 1px solid #c0cfe8;
}
form fieldset {
width: 100%;
margin: 0;
padding: 0;
border: 0 none transparent;
}
form fieldset legend {
display: block;
width: inherit;
padding: 0.2em 0;
background-color: #eaeef6;
border-bottom: 1px solid #c0cfe8;
text-indent: 2em;
font-size: 18pt;
font-weight: bold;
}
form fieldset p {
padding: 0 1em;
text-align: center;
}
form fieldset input, form fieldset select, form fieldset textarea {
width: 100%;
}
form fieldset label {
display: block;
text-align: left;
text-indent: 1em;
}
form fieldset label:hover {
text-decoration: underline;
cursor: pointer;
}
form fieldset br {
display: none;
}
.Bold {
font-weight: bold;
}
-->
</style>
</head>
<body>
<form action="temp.html" method="post">
<fieldset>
<legend>Send message</legend>
<p>
<label for="MTo" class="Bold">Choose recipient:</label><br />
<select name="to" id="MTo" tabindex="1">
<option value="friend">Friend</option>
<option value="enemy">Enemy</option>
<option disabled="disabled">———</option>
<option value="father">Father</option>
<option value="mother">Mother</option>
<option value="brother">Brother</option>
<option value="sister">Sister</option>
</select>
</p>
<p>
<label for="MText" class="Bold">Enter text:</label><br />
<textarea name="text" cols="20" rows="10" id="MText" tabindex="2"></textarea>
</p>
<p>
<input type="submit" value="Send (Ctrl+Enter)" tabindex="3" />
</p>
</fieldset>
</form>
</body>
</html>
и ведь это только
начало... на Тусе еще много всяких жуков, о которых я обязательно вам расскажу чуток попозже, как только их буду "обезвреживать"...