Помощник
|
Правильно ли я реализовал обработчик URL? |
pavelsc
|
Сообщение
#1
|
||
|
|
||
|
|||
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
|
Сообщение
#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 |
20.5.2011, 16:57;
Ответить: Lithium366
Сообщение
#4
|
|
В целом мыслите правильно, но изобретаете велосипед. Это называется hash-link. Погуглите, есть готовые библиотеки. Если бы вы использовали jQuery, я бы посоветовал http://tkyk.github.com/jquery-history-plugin
|
|
|
pavelsc
|
Сообщение
#5
|
|
Lithium366, а я уже потом догадался поискать в нете =) Нашел плагин, которые создает кастомное событие hashchange на jquery. Но там кода было на страницу и релизы версий плагина даже были с описанием исправленных багов. Я синтаксис jquery не совсем понимаю, но суть была тоже в том что через определенные промежутки времени просматривался хеш. Ну и у меня 4 строчки а там целая страница
|
|
|
maxim_malets |
22.5.2011, 2:02;
Ответить: maxim_malets
Сообщение
#6
|
|
Путь Джедая ;)
|
|
|
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
|
Сообщение
#8
|
|
nexus, из этого я понял что функция срабатывает onready, потом идет функция которая грузит ссылку. Каким-то чудом там еще и обрабатывается click. Остальное я совсем не понимаю по какому принципу работает :wacko:
|
|
|
nexus_hb |
26.5.2011, 14:29;
Ответить: nexus_hb
Сообщение
#9
|
|
Когда вся страница загрузится и вы кликните на ссылку, то берем ее href (адрес) и ajax-ом загружаем в div с классом block. Только jQuery надо подлючить!
|
|
|
pavelsc
|
Сообщение
#10
|
|
nexus, это все хорошо, только нет обработки hash при вставке ссылки в строку адреса. Но я понял что jQuery достаточно интересный фреймворк =)
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Учимся правильно отвечать | 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 |
Текстовая версия | Сейчас: 19.4.2024, 18:11 |