Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532

Система навигации

01.12.2015, 00:11. Показов 571. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хай.
Написал систему навигации.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
var NavigationCache = new Array();
var NavigationTitle = new Array();
var NoGoLinksArray = new Array();
var url;
 
function setPage(u)
{
    var M = new Message();
    M.Settings();
    M.Success = function(data)
    {
        if(data!= 0)
        {
            $('#site_body').html(data);
            NavigationCache['/' + u] = data;
            NavigationTitle['/' + u] = document.getElementById('title_data').innerHTML;
            document.title = document.getElementById('title_data').innerHTML;
            history.pushState({page: '/' + u, type: "page"}, document.title,'/' + u);
        }
    };
    M.Send({ajax:u,type:'p'},'ajax.php');
}
 
function Navigation()
{
    if (history.pushState)
    {
        url = window.location.search;
        NavigationCache[window.location.pathname] = document.getElementById('site_body').innerHTML;
        NavigationTitle[window.location.pathname] = document.title;
        history.pushState({page: window.location.pathname, type: "page"}, document.title, window.location.pathname);
        window.onpopstate = function(event) {
            if (event.state.type !== null && event.state.type.length > 0) {
                if (NavigationCache[event.state.page].length>0) {
                    document.getElementById('site_body').innerHTML = NavigationCache[event.state.page];
                    document.title = NavigationTitle[event.state.page];
                }
            }
        };
        document.onclick = function(event) {
            event = event || window.event;
            var target = event.target || event.srcElement;
            var href = 'non';
            if('A' === target.tagName) {
                if(target.getAttribute('data-ajax') != null)
                {
                    href = target.getAttribute('data-ajax');
                }
            }
            else if('IMG' === target.tagName)
            {
                if(target.parentNode.getAttribute('data-ajax') != null) {
                    href = target.parentNode.getAttribute('data-ajax');
                }
            }
            else if('BUTTON' === target.tagName)
            {
                if(target.parentNode.getAttribute('data-ajax') != null) {
                    href = target.parentNode.getAttribute('data-ajax');
                }
            }
            else if('SPAN' === target.tagName)
            {
                if(target.parentNode.parentNode.getAttribute('data-ajax') != null) {
                    href = target.parentNode.parentNode.getAttribute('data-ajax');
                }
            }
            if(href!=='non') {
                setPage(href);
                event.preventDefault();
            }
        }
    }
    else
    {
        alert('Your browser does not support History API. Use the latest version of Google Chrome, muff, Opera or Safari');
    }
}
Источник http://habrahabr.ru/post/154617/
JavaScript
1
2
3
4
window.onload = function()
{
    Navigation();
};
Все отлично работает, за исключением бага, который я заметил: при нажатии кнопки назад в момент, когда мы должны уйти с сайта или вернуться на стартовую страницу браузера вылетает ошибка Uncaught TypeError: Cannot read property 'type' of null в строке "if (event.state.type !== null && event.state.type.length > 0) {" 33
То есть не удается перейти на другой предыдущий сайт.
Подскажите как это исправить, спасибо.

Добавлено через 2 минуты
Тесты провожу на своем сайте http://switer.xyz/. Пока под ajax сделана одна кнопка "Оформить заказ". Все остальные ссылки загружаются в обычном режиме.

Добавлено через 19 минут
Также, если я обновлю страницу, то при нажатии кнопки назад браузера тоже возникает ошибка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2015, 00:11
Ответы с готовыми решениями:

Создание навигации
Здавствуйте! Я создала навигацию в программе open Cube - Nav Studio после этого скопировала код и вставила в html-страницу но...

Мерцание навигации
Такая проблема, мерцают активные якорные пункты навигации при наведении и отведении курсора на различные анимационные ссылки в контенте. В...

Картинка в навигации
Здравствуйте, не могу понять как сделать. Скрипт сам слайдер, а в низу у него навигацию (переключение картинки) - но они квадратики...

2
01.12.2015, 22:45

Не по теме:

Там, когда я жму на ссылку "наши работы", страница аварийно закрывается. И вообще, это называется, что говорили, что сайтами больше не занимаетесь :coffee:

0
4 / 4 / 1
Регистрация: 27.03.2015
Сообщений: 99
02.12.2015, 13:05
JavaScript
1
2
3
var NavigationCache = new Array();
var NavigationTitle = new Array();
var NoGoLinksArray = new Array();
мне кажется эти массивы стоит объединить в один объект поскольку они логически связаны
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2015, 13:05
Помогаю со студенческими работами здесь

Страницы навигации
Всем привет) <!Doctype html> <html lang="ru"> <head> <meta charset="utf-8" /> <title>Главная страница</title> <link...

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

Скрипт Навигации (na3)
:)Здравствуйте,я новичок в ява и у меня не большая проблемка ! Скачал скрипт навигации ,но не знаю как его вставить в сайт!Помогите кто...

Вопрос по навигации в iframe, JavaScript
Всем привет. С новым годом. У меня к вам вопрос. Как эти перци из google смогли реализовать такую навигацию в Gmail? особенно...

Как доработать онлайн проигрыватель в постраничной навигации???
Есть сайт с постраничной навигацией. Есть онлайн проигрыватель. Ссылка на проигрыватель: <object width="150"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru