Javascript.RU

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

window.location.hash...
Здравствуйте, не так уж и давно копаюсь в Jquery и Js но что-то уже есть.
Делаю запросы и передвижение по сайту без перезагрузки страницы. Используя window.location.hash. Сделал так что при нажатии кнопки и при переходе по урл будет выполнятся то что мне нужно. НО если нажать в браузере назад, или вперед то строка адреса меняется а вот новая информация не подгружается. Вот код:
function onLoadDocuments (){
 // здесь выполняется ajax-вызов 
 // а тут мы меняем значение адресной строки
 $("#doc_zone").load("login.php",
   {year: 2007, month: 1, day: 12},// некоторые параметры нужные для работы php-файла
   function() { 
     window.location.hash = 'documents';
   } 
  );
}
 
function onLoadContacts (){
 // здесь также идет ajax-вызов 
 // а тут мы меняем значение адресной строки
 $("#doc_zone").load("page.php",
  {street_no: 125},
  function() { 
    window.location.hash = 'contacts';
  }	 
 );
}
 
$(document).ready(
 function(){ 
   if (window.location.hash == '#documents'){
    // при загрузке страницы смотрим чему равно значение якоря 
    // и выполняем загрузку нужного содержимого
    onLoadDocuments ();
   }
   if (window.location.hash == '#contacts'){
    onLoadContacts ();
   }
 }
);

Так вот, как же сделать чтобы при нажатии назад/вперед все работало=)?
Ответить с цитированием
  #2 (permalink)  
Старый 10.06.2011, 10:14
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Так ты проверяй строку hash на изменения через какие то промежутки времени.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 10.06.2011, 14:50
Новичок на форуме
Отправить личное сообщение для SeLLaX Посмотреть профиль Найти все сообщения от SeLLaX
 
Регистрация: 10.06.2011
Сообщений: 9

ну а как это реализовать? просто из времени я знаю только settimeout()
можно конкретно? как это реализовать. пожалуйста. Одному трудновато во всем разгребаться=)
Ответить с цитированием
  #4 (permalink)  
Старый 10.06.2011, 16:24
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Ну как то так наверное, наверняка можно и лучше.
<html>
<head>
<script>
function checkHash(hash, callback) {
	if (hash != location.hash)
		callback(); //Если hash изменился то вызываем обработчик.
	
	hash = location.hash; //Сохраняем hash строку в переменную.
	setTimeout(function() {checkHash(hash, callback);}, 1000); //Проверяем hash снова через секунду.
}

function changed() { // Функция обработчик, вызывается когда меняется hash.
	alert('Hash changed');
}

hash = location.hash;

checkHash(hash, changed); // Инициализируем проверку hash'a
</script>
</head>
<body>
<a href="#check">check</a><br />
<a href="#second">second</a>
</body>
</html>
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 10.06.2011 в 16:27.
Ответить с цитированием
  #5 (permalink)  
Старый 10.06.2011, 19:30
Новичок на форуме
Отправить личное сообщение для SeLLaX Посмотреть профиль Найти все сообщения от SeLLaX
 
Регистрация: 10.06.2011
Сообщений: 9

почему в mozilla все работает а в хроме к примеру нет?
Ответить с цитированием
  #6 (permalink)  
Старый 10.06.2011, 19:38
Новичок на форуме
Отправить личное сообщение для SeLLaX Посмотреть профиль Найти все сообщения от SeLLaX
 
Регистрация: 10.06.2011
Сообщений: 9

хотя нет теперь все работает, но если перейти по ссылке, тоесть просто вставить в браузер из источника другого, то не отображается текст, как-будто нету проверки какой сейчас хеш, как быть?
Ответить с цитированием
  #7 (permalink)  
Старый 10.06.2011, 21:29
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Вот как я реализовал
Ответить с цитированием
  #8 (permalink)  
Старый 10.06.2011, 21:59
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Сообщение от Magneto Посмотреть сообщение
Вот как я реализовал
Ага, я тоже оттуда взял! Эта идея супер!
Ответить с цитированием
  #9 (permalink)  
Старый 11.06.2011, 09:05
Новичок на форуме
Отправить личное сообщение для SeLLaX Посмотреть профиль Найти все сообщения от SeLLaX
 
Регистрация: 10.06.2011
Сообщений: 9

благо что я уже изучил тот код что вы мне дали. поэтому понял почти все кроме:
xmlhttp.open('GET', uriContent, true);

этим выоткрывете uriContent? или что?
не понятна вот эта строка:
var uriContent = x.substr(1) + '.html';

и не могу найти про функцию getContent.
вот те моменты которые мне не понятны
Ответить с цитированием
  #10 (permalink)  
Старый 11.06.2011, 10:19
Новичок на форуме
Отправить личное сообщение для SeLLaX Посмотреть профиль Найти все сообщения от SeLLaX
 
Регистрация: 10.06.2011
Сообщений: 9

все, я разобрался в работе скрипта, спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение window.location.hash da_ff Элементы интерфейса 8 03.05.2013 11:52