![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| AKS |
|
||||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 2 Всего: 52 |
Функция для перестановки блоков была написана вчера на форуме Xpoint в результате попыток "оказать помощь" в решении следующей задачи.
Автору темы нужно было переставлять блоки при клике по заголовку блока. Каждый блок при этом должен меняться местом с "верхним соседом". Нечто похожее обычно делают для сортировки таблиц. Одно из условий было таким - в заголоке могут быть ссылки, и при клике по ним должен осуществляться обычный переход по ссылке без перестановки блока. Предлагая вам эту самую функцию, которая выполняет описанные выше действия, отмечу парочку условий:
Надеюсь, что эта функция сможет пригодиться для практического применения или же просто для обсуждения каких-либо аспектов использования JavaScript (последнее лично меня интересует больше всего). JavaScript (может располагаться в любом месте страницы):
(x)html (примерный образец того, какой должна быть разметка):
Это сообщение отредактировал(а) AKS - 9.11.2006, 17:07 |
||||
|
|||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 1 Всего: 401 |
AKS, прошу прощения за частичный оффтоп, но... в Опере с onload для window есть проблемы? Какие?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 2 Всего: 52 |
SelenIT,
Проблем-то нет, просто когда нужно было выбирать между addEventListner и attachEvent (чуть ниже поясню зачем нужен выбор) мне надо было передать параметром в функцию document, т.к. в моей Opera 7.23 нет window.addEventListener, а есть только document.addEventListener. Это осталось из темы addEventListener в Opera 7.54. Там нужно было выбрать именно метод addEventListener, т.к. в случае выбора attachEvent моя Opera 7.23 не хотела принимать третий аргумент (т.е. window.attachEvent(event, method, capture) работает, но только не в Opera 7.23). Тогда я сумел найти только два варианта:
В данном сценарии конструкция (window.opera) ? document : window не нужна, но и не мешает ;) - поэтому осталась "валяться". Зато когда я возился с этой функцией (а возился я долго ;) ), я обнаружил для себя интересный факт, касающийся Opera и ключевого слова this. Как видно из сценария, я здесь использовал такую вот конструкцию для определения поддерживаемого метода: m = (this.addEventListener) ? .... При первом вызове this указывает на window и Opera 7.23 выбирает в этом случае attachEvent (нет у нее window.addEventListener) и поэтому, именно для нее, потом пришлось применять eval. Но оказалось, что eval понадобится только при первом вызове! В Opera во время второго вызова ключевое (или, опять же, "глючевое" ;) ) слово this указывает на object HTMLDocument!!! Мне-то, конечно, хорошо - не пришлось использовать eval в цикле for, но... Касательно Opera 8+ - у них есть window.addEventListener, но в зарегестрированном методе this указывает на документ, а у "лисиц" this указывает на window. Вот такая вот у них (Opera) осталась странность с поддержкой window.addEventListener... |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 2 Всего: 52 |
SelenIT, можно в условии проверки на поддержку методов
m = (this.addEventListener) ? .... заменить this на document. Тогда не нужен будет eval, однако для Opera 7 обязательным будет (window.opera) ? document : window ... Это сообщение отредактировал(а) AKS - 9.11.2006, 18:18 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 1 Всего: 401 |
AKS, огромное спасибо за подробное объяснение! Осталось мне утрясти его в голове (столько нового за раз;)...
5+ Вообще, загадочная она - Опера... хотя если покопать, так все браузеры загадочные) AKS, еще к слову об Опере: в новых версиях нет такого, что поведение скриптов меняется в зависимости от того, под кого она мимикрирует? В 6-х, кажется, было... или это уже мои персональные глюки? -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| AKS |
|
|||
|
Участник форума ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 20.9.2006 Репутация: 2 Всего: 52 |
SelenIT,
Я не знаю. Вообще, такое сделать ей вряд ли под силу. Т.е. одно дело идентифицироваться по-разному, а другое дело работать по-разному - получается, что для этого ей надо иметь набор разных движков. Хотя чего только не бывает... ;) |
|||
|
||||
| Kasper1985 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 11.6.2007 Репутация: нет Всего: нет |
Подскажите пожалуйста как сделать чтобы свободно позиционируемы элементы на странице не смещались в сторону при изменении разрешения экрана, ни при нажатии f11 и т.д. Заранее спасибо.
|
|||
|
||||
![]()
|
| Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Наши скрипты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |