Jump to content

Great Rash

Expert
  • Posts

    7,974
  • Joined

  • Last visited

  • Days Won

    144

Everything posted by Great Rash

  1. Veseloff, не мудрите. npofopr дело говорит, надо просто создать лишний контейнер а уже относительно него позиционировать и блок с контентом и кнопку-крестик. Контент будет скроллится, а контейнер контента нет - вот и получится, что крестик будет всегда на месте стоять.
  2. А вот и нет. Когда я работал над интранет-проектом (строили интерфейс), там было очень много генерируемого на клиенте контента, в частности там были огромные, изменяющиеся по ходу заполнения, формы. Была куча страниц которые генерились на сервере полностью или получали часть контента аяксом и для них приходилось генерить айдишники, чтобы потом элементы искать - это было очень не удобно. Знай я об этом методе раньше мне бы очень это пригодилось, кучу лишней работы делать бы не пришлось. Опять же сейчас (так для себя) делаю один проект в котором этот метод пришелся весьма кстати.
  3. Ага, даже презираю Но дело не в этом. Таких сайтов миллион! Вбиваем в гугль "кошки" и видим, что таких сайтов видимо-невидимо. А значит ваш сайт, скорее всего, обречен либо на скорую смерть из-за отсутствия посетителей, либо на превращение в рекламную помойку (кстати зачатки этого видно уже сейчас). Вот на сайте Сами-знаете-кого есть изюминка , а ваша где? Где ваша я спрашиваю?
  4. Азы Что такое семантика Валидатор Что такое Doctype Список Doctype'ов P.S. А вообще про "качественный сайт" и "уникальные тексты" вы реально загнули Я вам таких "уникальных" текстов нагенерю штук 20 за час работы - ни один яндекс не догадается. С самомнением у вас порядок
  5. Мда... я бы не назвал это качественным сайтом. Для начала приведите верстку в порядок. Не удивительно, что ТИЦ у вас не растет. Обмен ссылками тут не причем. Где доктайп? Где семантика? Куча пустых элементов. Половина тегов не закрыта. Судя по тегу <html> у вас предполагается XHTML, но им там даже не пахнет! Все очень плохо.
  6. Вот и я не знал что можно, поэтому начал экспериментировать. Лишние дивы ой как не хотелось создавать. А тут на такое красивое решение наткнулся, что вот спешу делиться с народом. Думаю у многих такая проблема возникала.
  7. Интересно посмотреть на этот "качественный сайт".
  8. У меня вот тут возникла довольно специфическая проблема - вставить контент, генерируемый скриптом, в определенное место на странице. Контент генерируется при помощи методов DOM createElement и appendChild поэтому вставить на странице его при помощи document.write не получится. Долго придумывал решение и наконец придумал такое: 1) назначаем скрипту id 2) в самом скрипте находим его же по id 3) вставляем нужный контент при помощи insertBefore Как это выглядит в коде: <body> <!-- задаем id скрипту --> <script type="text/javascript" id="script"> // ищем самого себя var self = document.getElementById('script'); // создаем тестовый элемент var test = document.createElement('div'); test.appendChild(document.createTextNode('я новый элемент!')); // вставляем новый элемент на место скрипта self.parentNode.insertBefore(test, self); </script> <div>какой-то элемент</div> </body> Все круто! Кроме того, что нужно скрипту задавать id, что не совсем удобно. Поэтому я начал гуглить в поисках более красивого решения... И я его нашел! Автором является некий Андрей Кузнецов: <head> ... <script type="text/javascript"> function thisElement() { var obj = document.documentElement; while (obj.lastChild) obj = obj.lastChild; return obj.parentNode; } </script> </head> <body> <script type="text/javascript" id="script"> // ищем самого себя var self = thisElement(); // создаем тестовый элемент var test = document.createElement('div'); test.appendChild(document.createTextNode('я новый элемент!')); // вставляем новый элемент на место скрипта self.parentNode.appendChild(test); </script> <div>какой-то элемент</div> </body> Вот ссылка на оригинал Есть правда одно ограничение, этот метод работает только один раз, т.е. вы не можете вызвать его два раза подряд в одной и той же функции. Но этот недостаток настолько мал, что можно считать что его и нет вовсе. Надеюсь вам это элегантное решение будет так же полезно как и мне.
  9. Назначаем обработчкики событий Вообще этот метод у меня самый короткий наверное, т.к. в моем интерфейсе кнопка всего одна Но если вы вдруг захотите после прочтения написать улучшенный вариант сапёра, то вам понадобится этот метод, чтобы назначать обработчики в одном месте. var MyMineSweeper = { init: function(o) { this.W = o ? o.W : 7; this.H = o ? o.H : 7; this.bombs = o ? o.bombs : Math.floor(this.W * this.H / 4); this.placedBombs = this.bombs; this.generateGUI(); }, generateGUI: function() { if (!this.game) { this.game = this.writeMainContainer(); this.gameCont = document.createElement('table'); this.gameCont.className = 'game-cont'; this.gameCont.insertRow(0); this.gameCont.insertRow(1); this.gameMenu = this.gameCont.rows[0].insertCell(0); this.gameMenu.rowSpan = 2; this.gameMenu.className = 'game-menu'; this.gameMenu.appendChild(document.createTextNode('Ширина поля:')); this.gameMenu.appendChild(document.createElement('br')); this.WInput = document.createElement('input'); this.WInput.type = 'text'; this.gameMenu.appendChild(this.WInput); this.gameMenu.appendChild(document.createTextNode('Высота поля:')); this.gameMenu.appendChild(document.createElement('br')); this.HInput = document.createElement('input'); this.HInput.type = 'text'; this.gameMenu.appendChild(this.HInput); this.gameMenu.appendChild(document.createTextNode('Кол-во мин:')); this.gameMenu.appendChild(document.createElement('br')); this.BInput = document.createElement('input'); this.BInput.type = 'text'; this.Init = document.createElement('input'); this.Init.type = 'button'; this.Init.value = 'Старт'; this.Init.className = 'game-start-button'; this.gameMenu.appendChild(this.BInput); this.gameMenu.appendChild(this.Init); this.gameStats = this.gameCont.rows[0].insertCell(1); this.gameField = this.gameCont.rows[1].insertCell(0); this.gameField.className = 'game-field'; this.game.appendChild(this.gameCont); } if (this.board) { this.board.parentNode.removeChild(this.board); this.board = null; } this.board = this.generateField(); this.board.cellSpacing = 0; this.board.className = 'game-board'; this.gameField.appendChild(this.board); this.gameStats.innerHTML = 'Новая игра: поле ' + this.W + 'x' + this.H + ', ' + this.bombs + 'мин'; this.setupEvents(); }, setupEvents: function() { var self = this; var buttonClick = function() { self.init({W: self.WInput.value, H: self.HInput.value, bombs: self.BInput.value}); } Event.add(this.Init, 'click', buttonClick); }, generateField: function() { var self = this; var table = document.createElement('table'); for (var i = 0; i < this.H; i++) { var r = table.insertRow(i); for (var j = 0; j < this.W; j++) { var c = r.insertCell(j); c.num = 0; c.index = [i, j]; c.clickHandler = function() { self.showInfo(this); } Event.add(c, 'click', c.clickHandler); } } do { var hNum = this.rand(0, this.H - 1); var wNum = this.rand(0, this.W - 1); if (!table.rows[hNum].cells[wNum].bomb) { table.rows[hNum].cells[wNum].num = null; table.rows[hNum].cells[wNum].bomb = true; this.placedBombs--; } } while (this.placedBombs > 0); for (var i = 0, len = table.rows.length; i < len; i++) { for (var j = 0, len2 = table.rows[i].cells.length; j < len2; j++) { if (table.rows[i].cells[j].bomb) { this.placeNumbers(table, j, i); } } } return table; }, placeNumbers: function(t, x, y) { if (x > 0) { t.rows[y].cells[x - 1].num++; } if (x < this.W - 1) { t.rows[y].cells[x + 1].num++; } if (x > 0 && y > 0) { t.rows[y - 1].cells[x - 1].num++; } if (y > 0) { t.rows[y - 1].cells[x].num++; } if (y > 0 && x < this.W - 1) { t.rows[y - 1].cells[x + 1].num++; } if (x > 0 && y < this.H - 1) { t.rows[y + 1].cells[x - 1].num++; } if (y < this.H - 1) { t.rows[y + 1].cells[x].num++; } if (x < this.W - 1 && y < this.H - 1) { t.rows[y + 1].cells[x + 1].num++; } }, writeMainContainer: function() { var html = '<div id="game" class="game"></div>'; document.writeln(html); return document.getElementById('game'); }, rand: function(min, max) { min = parseInt(min); max = parseInt(max); return Math.floor(Math.random() * (max - min + 1)) + min; } } Пока все. Продолжение будет. Все вопросы, предложения и прочее в приват. Не забываем про лесть
  10. с дуру можно и пипиську сломать...
  11. PS3 (если бы не новая прошивка), может спокойно заменить собой писюк, т.к. на нее можно (раньше можно было) поставить Линукс. С выходом новой прошивки эту возможность убрали (а жаль). Но все равно PS3 вполне способна заменить PC, особенно если комп используется в основном как медиацентр.
  12. Зря вы так... 1) это сугубо ваши проблемы 2) гугль уже умеет индексировать, про остальные не знаю 3) это да 4) смотря чего туда понапихать, если все в векторе сделать, то будет летать.
  13. Все зависит от шрифта, может нет такого символа, еще от браузера зависит. У меня к примеру в Хроме с шрифтом "Trebuchet MS" все прекрасно отображается.
  14. Рекомендую заглянуть сюда Ваша проблема может решиться к примеру так: A²
  15. Поддерживался бы он бы браузерами бы нативно... а так.. ну игрушки на нем сварганить, ну промо-сайт... не гэ конечно, но и не супер-пупер технология. Опять же с приходом HTML5 на большинстве сайтов необходимость во флеше отпадет. По ходу его ждет та же судьба что и java-апплеты.
  16. Во-первых, не <script language="JavaScript">, а <script type="text/javascript">, во-вторых, объект event должен быть передан в функцию - function clickHandler(e), в-третьих, window.event не будет работать в Мозилле (странно что в Хроме работает) Опера и ИЕ - почти одинаковое гумно, поэтому там любой кривой код магическим образом работает....
  17. Yotube там работает, это я как владелец PS3 вам говорю. Что наводит на мысль о том, что можно смело верстать как под Gecko/Webkit и быть уверенным, что не развалится.
  18. Переношу во флейм, тут не обсуждаются работы, а помогают людям у которых затруднения.
  19. Попробовал пинговать. При ShareNetwotking (NAT) пинг не проходит. При выставлении в опциях моей сетевухи пинг проходит, но когда пытаюсь вбить в браузер http://192.168.1.27 - пишет "страница не найдена". IP не менялся. Может ну его в попу этот virtual PC? Virtual Box работает с образами в формате .vhd?
  20. Попробовал. Запустил виртуальную машину, открыл на редактирование файл hosts, прописал там 192.168.1.27 localhost somesite - не работает. Структура папок у меня такая: C://WebServers/home/localhost - это типа стартовая страница Денвера C://WebServers/home/somesite - стартовая страница моего сайта Пробовал писать в hosts вот так: 192.168.1.27 localhost 192.168.1.27 somesite тоже не работает.
×
×
  • 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