Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2016, 12:25
Новичок на форуме
Отправить личное сообщение для meAndreas Посмотреть профиль Найти все сообщения от meAndreas
 
Регистрация: 15.02.2016
Сообщений: 9

Перейти на страницу с аякс-контентом по кнопке назад
Помогите разобраться с тем что происходит. Есть страница, на которой данные подгружаются аяксом по переходам на страницы
Код:
_________________________________________
[              1 2 3 4 5          
[          _____________________      
[          [                    ]     
[          [      аякс          ]     
[          [                    ]      
[           ---------------------     
_________________________________________
Данные подружаются по изменению хэша. Т.е. ссылки при переходе по страницам такие mysite.com/#1, mysite.com/#2, ...

первая страница по ссылке mysite.com (т.е. которая соответствует #1) загружается
полностью (без аякса), а все остальные с подгрузкой внутренней части

я остлеживаю событие onhashchange и по кликам на ссылках страниц в функции подгружаю по номерам хешей внутренний блок.

проблема возникает, когда я перехожу например со страницы mysite.com/#10 на страницу mysite.com/help.html и потом нажимаю кнопку назад в браузере.

После того как кнопка назад нажата, браузер показывает правильный url: mysite.com/#10, но во внутреннем блоке данные со страницы mysite.com, т.е. с первой страницы - она из кеша чтоли загружается?

как вернуться по кнопке назад на страницу #10 с правильным содержимым блока аякса?

при этом событие onhashchange не срабатывает (проверял в консоли) и поэтому не загружается внутренний блок для страницы 10

как это решить?
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2016, 12:28
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Что мешает обрабатывать событие DOMContentLoaded или onload?
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2016, 12:39
Новичок на форуме
Отправить личное сообщение для meAndreas Посмотреть профиль Найти все сообщения от meAndreas
 
Регистрация: 15.02.2016
Сообщений: 9

Сообщение от destus Посмотреть сообщение
Что мешает обрабатывать событие DOMContentLoaded или onload?
я так понимаю, что onload это когда все что на странице подгрузилось - как это поможет решить проблему? по-моему никак.

теперь, DOMContentLoaded– браузер полностью загрузил HTML, и построил DOM-дерево. т.е. по этому событию я смогу получить номер хэша и вызвать page #10 ?
Ответить с цитированием
  #4 (permalink)  
Старый 15.02.2016, 12:51
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от meAndreas Посмотреть сообщение
я так понимаю, что onload это когда все что на странице подгрузилось - как это поможет решить проблему? по-моему никак.

теперь, DOMContentLoaded– браузер полностью загрузил HTML, и построил DOM-дерево. т.е. по этому событию я смогу получить номер хэша и вызвать page #10 ?
А разве оно не будет срабатывать после нажатия кнопки назад? Напишите alert(location.hash) и посмотрите что будет.
Ответить с цитированием
  #5 (permalink)  
Старый 15.02.2016, 13:47
Новичок на форуме
Отправить личное сообщение для meAndreas Посмотреть профиль Найти все сообщения от meAndreas
 
Регистрация: 15.02.2016
Сообщений: 9

я сделал так
document.addEventListener("DOMContentLoaded", ready);
	function ready() {
		console.log( 'DOM ready ' + location.hash );
		$("#CAPTCHA").attr("src","http://captcha.ru/captcha/");
	}

после нажатия кнопки назад - вывод в консоль есть, но после ничего не обновляется
как же делать что либо после того, как сработал DOMContentLoaded?
Ответить с цитированием
  #6 (permalink)  
Старый 15.02.2016, 14:00
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Например

document.addEventListener("DOMContentLoaded", ready);
	function ready() {
		location.hash && window.onhashchange();
	}

Последний раз редактировалось destus, 15.02.2016 в 14:03.
Ответить с цитированием
  #7 (permalink)  
Старый 15.02.2016, 14:18
Новичок на форуме
Отправить личное сообщение для meAndreas Посмотреть профиль Найти все сообщения от meAndreas
 
Регистрация: 15.02.2016
Сообщений: 9

и что это дает?
мне нужно выполнить из функции ready() действия - например, вывод в консоль проходит, а дальше $("#CAPTCHA").attr("src","http://captcha.ru/captcha/"); не срабатывает. я сейчас говрю про дейсвия которые происходят при нажатии кнопок back - forward
Ответить с цитированием
  #8 (permalink)  
Старый 15.02.2016, 14:35
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

В первом сообщении вы спрашивали почему у вас событие onhashchange не срабатывает, вам показали как можно вызывать события искусственным образом. и обрабатывать хэш-параметр.

Почему у вас в какой-то элемент с id CAPTCHA не подгружается url картинки только вам известно. Вы же разметку страницы не даёте.
Ответить с цитированием
  #9 (permalink)  
Старый 15.02.2016, 14:46
Новичок на форуме
Отправить личное сообщение для meAndreas Посмотреть профиль Найти все сообщения от meAndreas
 
Регистрация: 15.02.2016
Сообщений: 9

Сообщение от destus Посмотреть сообщение
Почему у вас в какой-то элемент с id CAPTCHA не подгружается url картинки только вам известно.
я это попробовал сделать на странице только для примера
и оно не сработало при нажатии кнопки "назад", возможно это связано с подгрузкой jquery.

допустим, мы выполнили действие из функции ready(),
но ведь оно будет выполняться всегда при условиях:

- пользователь перешл по ссылке с хэшем
- пользователь перешел по истории на ссылку с хэшем

а смысл всего о чем мы гворим - чтобы выполнялось только при надажтии хардварных кнопок, - так возможно?
Ответить с цитированием
  #10 (permalink)  
Старый 15.02.2016, 14:59
Новичок на форуме
Отправить личное сообщение для meAndreas Посмотреть профиль Найти все сообщения от meAndreas
 
Регистрация: 15.02.2016
Сообщений: 9

ниже в ссылках кстати есть топик, где у кого-то была такая же проблема на сайте дабидабидаби point cvetoland point ru
если перейти на страницу 5, потом перейти на товар, нажать кнопку назад в браузере, то вас выкинет на первую страницу, а нужно на стр. 5
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход назад на страницу rvk1986 Javascript под браузер 0 17.01.2016 12:43
аякс запрос на jquery на http:// страницу ninja2 Общие вопросы Javascript 4 13.06.2015 09:18
Назад на страницу darl Общие вопросы Javascript 11 23.03.2015 14:55
Назад на предыдущую страницу BLP Элементы интерфейса 7 01.11.2012 10:28
Помогите глупенькой, как перейти на n-ную страницу сайта где джава??? nslannd Общие вопросы Javascript 12 19.04.2012 10:00