X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Правильно ли я реализовал обработчик URL?
pavelsc
pavelsc
Topic Starter сообщение 18.5.2011, 14:27; Ответить: pavelsc
Сообщение #1


Суть в том, что я использую на сайте AJAX-скрипт (ajaxpagination) для подгрузк отдельной страницы с сервера в div. Слева у меня находится меню ссылок, по мануалу загрузка странички осуществляется таким образом:
<li><a href="javascript:mybookinstance.selectpage(3)">Устройство синхронизации анализатора спектра</a></li>

Но в таком случае проблема в том, что URL всегда один и тот же. То есть посетитель не сможет кому-либо скинуть ссылку на конкретный проект.
Немного подумав реализовал ссылку так:
<li><a href="?Timing_Of_Spectrum_Analyzer">Устройство синхронизации анализатора спектра</a></li>

После чего поставил в начало странички обработчик:
[JS]
<script> window.onload = function (){
switch(window.location.search.toString()){
case "?MultiTesS": mybookinstance.selectpage(0);break;
case "?Capacitance_Calibration": mybookinstance.selectpage(1);break;
case "?Measuring_GSM_UMTS_CDMA2000_parameters": mybookinstance.selectpage(2);break;
case "?Timing_Of_Spectrum_Analyzer": mybookinstance.selectpage(3);break;
case "?AIQ_Player": mybookinstance.selectpage(4);break;
case "?EMC_Test": mybookinstance.selectpage(5);break;
case "?WiFi_Compliance": mybookinstance.selectpage(6);break;
case "?Cable_Loss": mybookinstance.selectpage(7);break;
case "?High_Voltage_Switch": mybookinstance.selectpage(8);break;
case "?Cable_Test": mybookinstance.selectpage(9);break;
default: mybookinstance.selectpage(0);} } </script>
[/JS]

Вроде все работает, но меня не покидает ощущение что тут что-то не так. Может кто сталкивался с необходимостью постройки URL в ajax страничках?
Вот тут моя реализация.
Кстати вчера ночью у меня глючила она, выдавала на мгновение главную страницу с первым проектом перед тем как выдать запрашиваемую страничку с нужным проектом. Сегодня не глючит. К сожалению я так и не понял почему, то ли браузер пытался выдать старый кэш постоянно, не обрабатывая search часть URL, то ли он теперь закешировал все странички и поэтому не глючит
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pavelsc
pavelsc
Topic Starter сообщение 18.5.2011, 20:23; Ответить: pavelsc
Сообщение #2


Ну вот мне опять никто не помогает =( Действительно, на локальном сервере все нормально работает, а вот из инета глюк на глюке. Да и к тому же смена search ведет к перезагрузке страницы как видно из поста выше, и не важно что она их кеша берется. Поэтому перевел на hash скрипт:
[JS]
<script type="text/javascript">
window.onload = function (){
switch(window.location.hash.toString()){
case "#MultiTesS": mybookinstance.selectpage(0);break;
case "#Capacitance_Calibration": mybookinstance.selectpage(1);break;
case "#Measuring_GSM_UMTS_CDMA2000_parameters": mybookinstance.selectpage(2);break;
case "#Timing_Of_Spectrum_Analyzer": mybookinstance.selectpage(3);break;
case "#AIQ_Player": mybookinstance.selectpage(4);break;
case "#EMC_Test": mybookinstance.selectpage(5);break;
case "#WiFi_Compliance": mybookinstance.selectpage(6);break;
case "#Cable_Loss": mybookinstance.selectpage(7);break;
case "#High_Voltage_Switch": mybookinstance.selectpage(8);break;
case "#Cable_Test": mybookinstance.selectpage(9);break;
default: mybookinstance.selectpage(0);}
}
</script>
[/JS]

А ссылка теперь выглядит так:
<li><a href="#Timing_Of_Spectrum_Analyzer" onclick="mybookinstance.selectpage(3);">Устройство синхронизации анализатора спектра</a></li>


Ссылки передаются, глюков нет. Теперь осталась совсем маленькая проблема. Надо научить скрипт стартовать при смене хеша, не обновляя при этом страницу. И без скрипта, который через интервалы проверяет URL. А то так неинтересно :) Вот как это сделать - ума не приложу.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pavelsc
pavelsc
Topic Starter сообщение 18.5.2011, 22:54; Ответить: pavelsc
Сообщение #3


Хм. Оказалось в последних браузерах есть событие onhashchange. В общем кроме как через интервалы походу выбора нет. Ну вот что у меня получилось, может и пригодится кому:
[JS]<script type="text/javascript">

var hash = window.location.hash.toString();

function loadMyPage(){
switch(window.location.hash.toString()){
case "#MultiTesS": mybookinstance.selectpage(0);break;
case "#Capacitance_Calibration": mybookinstance.selectpage(1);break;
case "#Measuring_GSM_UMTS_CDMA2000_parameters": mybookinstance.selectpage(2);break;
case "#Timing_Of_Spectrum_Analyzer": mybookinstance.selectpage(3);break;
case "#AIQ_Player": mybookinstance.selectpage(4);break;
case "#EMC_Test": mybookinstance.selectpage(5);break;
case "#WiFi_Compliance": mybookinstance.selectpage(6);break;
case "#Cable_Loss": mybookinstance.selectpage(7);break;
case "#High_Voltage_Switch": mybookinstance.selectpage(8);break;
case "#Cable_Test": mybookinstance.selectpage(9);break;
default: mybookinstance.selectpage(0);}
}

function changehashevent(){
if (hash!=window.location.hash.toString()){
loadMyPage();}
hash = window.location.hash.toString();
setTimeout("changehashevent()",100);
}

window.onload = function(){
loadMyPage();
changehashevent();
};

</script>[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lithium366
Lithium366
сообщение 20.5.2011, 16:57; Ответить: Lithium366
Сообщение #4


В целом мыслите правильно, но изобретаете велосипед. Это называется hash-link. Погуглите, есть готовые библиотеки. Если бы вы использовали jQuery, я бы посоветовал http://tkyk.github.com/jquery-history-plugin
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pavelsc
pavelsc
Topic Starter сообщение 21.5.2011, 2:13; Ответить: pavelsc
Сообщение #5


Lithium366, а я уже потом догадался поискать в нете =) Нашел плагин, которые создает кастомное событие hashchange на jquery. Но там кода было на страницу и релизы версий плагина даже были с описанием исправленных багов. Я синтаксис jquery не совсем понимаю, но суть была тоже в том что через определенные промежутки времени просматривался хеш. Ну и у меня 4 строчки а там целая страница
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 22.5.2011, 2:02; Ответить: maxim_malets
Сообщение #6


Путь Джедая ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
nexus_hb
nexus_hb
сообщение 25.5.2011, 10:53; Ответить: nexus_hb
Сообщение #7


Что-то я не пойму! А почему не сделать так:
[JS]
$(document).ready(function () {

$('a').click(function(event){

var link = $(this).attr('href');

event.preventDefault();

$('div.block').load(link+' div.block');
});
})
[/JS]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pavelsc
pavelsc
Topic Starter сообщение 25.5.2011, 14:50; Ответить: pavelsc
Сообщение #8


nexus, из этого я понял что функция срабатывает onready, потом идет функция которая грузит ссылку. Каким-то чудом там еще и обрабатывается click. Остальное я совсем не понимаю по какому принципу работает :wacko:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
nexus_hb
nexus_hb
сообщение 26.5.2011, 14:29; Ответить: nexus_hb
Сообщение #9


Когда вся страница загрузится и вы кликните на ссылку, то берем ее href (адрес) и ajax-ом загружаем в div с классом block. Только jQuery надо подлючить!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pavelsc
pavelsc
Topic Starter сообщение 26.5.2011, 23:00; Ответить: pavelsc
Сообщение #10


nexus, это все хорошо, только нет обработки hash при вставке ссылки в строку адреса. Но я понял что jQuery достаточно интересный фреймворк =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Учимся правильно отвечать
17 falken 21620 13.7.2020, 18:13
автор: falken
Открытая тема (нет новых ответов) Куплю "вечные URL" с ваших сайтов с тематикой - Пластиковые Окна!
5 regem 8380 15.3.2020, 19:46
автор: Narsus797
Открытая тема (нет новых ответов) Как правильно купить сайт?
6 magnet 2754 9.3.2020, 18:54
автор: Plya
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыСколько денег правильно реинвестировать?
4 Bilish 1151 20.1.2020, 19:03
автор: Santey
Открытая тема (нет новых ответов) Как перенести правила переадресации из .htaccess в php обработчик nginx?
0 KrisGuseva 2097 28.12.2019, 7:33
автор: KrisGuseva


 



RSS Текстовая версия Сейчас: 19.4.2024, 18:11
Дизайн