![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
В настоящее время мы массово умеем работать с частями страницы обычно в 2 вариантах:
1) делать якоря на внутренностях страницы, чтобы организовать навигацию; 2) скрывать/показывать блоки кликом на управляющем объекте - заголовке или пункте меню. Технология Ajax позволяет работать с содержимым более широко, появилась удобная и развиваемая возможность подгружать части страницы. Из -за объёма хранимой на странице информации продолжает быть актуальным сокрытие части страницы в свёрнутых блоках информации. Отдельно якоря и простые скрипты свёртки уже не подходят для управления страницей. Назревает необходимость сделать инстумент управления с рядом частоиспользуемых функций. Идеи по отображению содержимого страниц описывались в рамках темы "ветвь документа с определяемым представлением ". Там шла речь о многообразии представлений одних и тех же данных сайта и описывались возможные представления их:
Представим модель страницы, представляющую собой заголовок с навигацией и последовательность блоков на всю ширину страницы. Каждый из них может как сворачиваться до заголовка, так и полностью удаляться. В любое место списка могут быть подгружены другие блоки. Это - часто встречающаяся ситуация при показе новостей, сообщений, правок, коротких статей или их частей. Объединение скриптов управления блоками и ссылками на якоря позволило бы перевести управление страницей на другой, более удобный уровень. |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Ссылка по теме: http://webplanet.ru/column/service/shepele...emanticweb.html
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
12345c, а в чём вопрос/проблема/идея?
Тенически тебе придёться указать адрес текста, который будет содержать параметры скрипту. Якоря будут работать хорошо если отдавать страницу селиком, где якор присутствует, будем сразу прыгать куда надо. Если реально отдавать малую часть по запросу, то якорь можно принимать сктиптами и выдавать инфу, например: .http://localhost/xml/workers/Sam Carter#birthday выдаст <date timestamp="###" format="yyyy-mm-dd">1974-02-15</date> В то время если обратиться: .http://localhost/workers/Sam Carter Выдаст персональную страницу. Тут всё от фантазии разработчика и заказчика. В чём проблема то была? ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Или я подхожу издалека, или ты спешишь узнать, что будет дальше
![]() Есть тут идея, я пишу её для порождения ассоциаций у читателей и вызывания подсказок с их стороны. Но если всё расскажу сам, это может быть неинтересно? Идея поставлена так: нужно иметь навигацию по частям страниц сайта. Примитивная механика якорей не подходит. Надо сделать удобную, юзабельную подсистему. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Выше я привёл как я бы делал. Т.е. сделал бы три точки входа:
![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Каждый реализует (не первый год) динамическое управление блоками страницы? Что-то первый раз об этом слышу.
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
12345c, тогда я не понял о чём ты. Обрисуй пример, обрисуй как "для дурака", т.е. клик сюда, будет то то
![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Берём эту страницу, которая фигурировала в недавней теме как пример: http://js2.ru/files/article-DOM.shtml . У неё около 10 частей, из них 8 нижних свёрнуты. Разворачиваются по клику на боковой полосе бордюра возле текста.
Если внутренние ссылки указывают на свёрнутый блок, они не сработают. Клик по якорю прокрутит страницу не очень удобно (начало текста вверху). Указанный блок не подсветится. Много ещё можно придумать удобств для навигации, которые не мешает реализовать. 1. Например, сейчас скрипт сворачивания не очень заметен. Надо сделать, чтобы активная область для разворачивания переходила на заголовок. 2. Не очень хорошо описано понятие заголовка - каждый раз конкретный тег. Полезно будет, если при отсутствии выделенного заголовка скрипт сам бы выбирал начало текста. 3. Нет подсказки, какой размер блока скрыт под заголовком. 4. клик по скрытому якорю - логично, чтобы разворачивал блок с ним и подкручивал страницу. Если конец страницы - всё равно бы подкручивал так, чтобы указанный фрагмент с якорем был бы в середине окна. 5. Отдельная функция перехода по якорю - подсветка фрагмента (сменить фон, нарисовать рамку, полосу слева или сделать серым весь остальной фон). 6. Другая функция - подгрузка раздела вместо разворачивания. Это называется управление частями страницы. Это сообщение отредактировал(а) 12345c - 3.3.2008, 14:12 -------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Я думал об этом, очень интересная тема. Особенно всвязи с AJAX, который не модифицирует адресную строку и оставляет передачу ссылок на нашей программерской совести.
Прихожу к иерархической компонентной модели и глобальному рекурсивному опросу каждого компонента с последующей генерацией URL-a на основе этого опроса. Небольшая заметка: разумеется, после перехода по такой ссылке адресная строка должна чиститься, а информация передаваться через сессию. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
dm9, на текущий момент ситуация: или аякс или смена адреса. Что бы сменить адрес нужна перезагрузка, только смена якоря перезагрузку страницы не вызывает, но! никак не отслеживаеться через JS. Можно отследить пользуя скрытую флешку (была тут тема, хотя не помню было ли там событие или всё таки по таймеру проверяли), но это изврат. ИМХО, в смене адреса нет необходимости если есть хорошо видная ссылка на "текущую страницу" (в хлебных крошках например). Естественно по прямой ссылке сервер должен выдавать нужный контент, а после уже аякс вступает в работу. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Сардар, мы про одно и то же, но разными словами
![]() Предположим, мы имеем AJAX-приложение и хотим зафиксировать его текущее состояние с тем, чтобы «передать ссылку другу». Компонентная модель подразумевает рекурсивный опрос всех компонентов страницы, и генерацию «текущего адреса». Это псевдо-адрес, на самом деле. Его нет. Это всего лишь главная страница (у AJAX-приложения только главная и есть) плюс куча параметров по подгрузке/разворачиванию компонентов. Я там написал «Небольшая заметка», и это действительно так. Я подразумевал, что мы запрашиваем что-то вроде domain.com/1=c&1_4=wqw&1_5=112&1_5_6_6=asdzcZxc, расшифруем эти параметры, понимаем, какие компоненты надо подгрузить и пишем эти параметры в сессию. А потом делаем `Location: domain.com`, чтобы не портить адресную строку. А портить её нельзя потом, что состояние компонентов может измениться и не соответствовать текущему URL-у. Вопрос о методе сериализации состояния компонентов в набор параметров остаётся для меня пока открытым. |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Sardar, отследить нельзя было только переходы по браузерным кнопкам истории в IE. Остальное всё работало (и те же кнопки в FF, Opera). Клики по ссылкам тоже хорошо отслеживаются. Поэтому на задействование отображения якорей в Аяксе в адресной строке немного недостаёт возможностей IE, и то при работе с кнопками истории. Выход - делать дублирующие кнопки истории для IE, а при попытке нажать браузерные выдавать предупреждение о желательности работы с дублирующими.
Впрочем, работа Аякса со страницей и адресной строкой - это отдельная тема и библиотечная функция. Связанная с обсуждаемой темой в плоскости подгрузки данных. Про работу с адресной строкой я тоже хочу создать тему, после того как доберусь до процесса решения этой задачи. dm9, в плане связки с Аяксом я понимаю так, что должны существовать 2 представления УРЛа: нормальное и подгружаемое. Вид нормального представления адресной строки - обычный автоматический - каталог, страница, параметры. При навигации через Аякс (которая может начаться с любой страницы) адресная строка до значка "#" замирает или мы один раз принудительно переходим в красиво смотрящийся каталог, а затем вся информация после "#" должна содержать все параметры (каталог, страница, параметры), существующие в нормальном представлении. Например, http://<какой-то сайт>/files/js/books/reference33.php?page=44 равносильно http://<какой-то сайт>/#files/js/books/reference33.php?page=44 где всё, что после "#" - это имя якоря. Не проверял читаемость в якоре всех спецсимволов, но многие он читает. Одна особенность: чтобы якоря любого вида с аяксом или вообще корректно работали, сам якорь должен существовать на странице, иначе он не впишется в историю. Это значит, что по клику на аяксовую ссылку где-то на странице надо сначала создать якорь, потом кликнуть и перейти. Такой переход проверялся, работает во всех, если якорь уже есть на странице, но не проверялось создание якоря непосредственно перед переходом. Добавлено @ 15:31
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
dm9, ИМХО всегда считал такой подход не правильным, вдруг у юзера нет JS или аякс глючит, всё убьёться
![]() Любая страница, любой ресурс должен уметь генерить обычную страницу + аякс, который сразу после загрузки ловит и обрабатывает все ссылки сам. Затем запросы идут аяксом, отдаёться только контент в XML кратко. Конечно на сервере потребуеться делать две точки входа (например реврайт на /, /xml и /print ), где XML версия очень проста, ведь не нужно подгружать меню и прочие модули. Плюсы подхода: всё продолжает работать где угодно, хотя не аяксовая версия почти всегда сильно урезана по функционалу. Такова цена за любовь к левым браузерам. Минусы: в адресной строке стоит адрес самой первой страницы. Лечиться твоим методом, но потребуеться открыть сессию или времено адрес положить в куки + лишний редирект, хотя не страшно ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |