Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.240.21] |
|
Сообщ.
#1
,
|
|
|
Ситуация такая,есть сайт,в который все подгружается динамически с помощью ajax ф-и API jquery,и как следствие если все грузится у нас в блок и все происходит на единственной страницы,ссылок у нес нет,и естественно навигация браузера работать не будет,т.к. непофецу "ходить",страницы то одна,я решил сделать это с помощью якорей ссылок,искусственно добавлять их при переходе по ссылкам меню,т.к. это единственный способ,и потом сравнивать значения window.location.history и window.location.hash,в ф-и которая выполняется в фоновом режиме...Получается какаето мистика,при первой загрузки страницы у меня все работает,но как только я перехожу по ссылки,у меня сперва вываливается alert() для тестирования с якорем,который щас должен отображаться в строке браузера,и отображается благополучно до того как мы нажимаем ОК на алерте,потом грузится контент,а после его загрузки якорь сразу же пропадает!В чем причина!?не пойму....
примеры скриншотов и кода прикрепляю....помогите разобраться..... <script type="text/javascript"> function skazatPrivet(href) { if(href.indexOf("http://")!=0) { //а тут все по обычному,грузим в блок нужный контент в зависимости от ссылки $.cookie("current_str", href); //установить значение cookie $('#center_center').load(href); } else { //тут у нас динамический iframe нужен если у нас ссылка с внешнего источника var el = document.createElement("iframe"); el.id = 'myiframe'; el.name = 'myiframe'; el.style.width = "100%"; el.style.height ="500px"; el.scrolling="auto" ; el.frameBorder="0"; el.src = href; $('#center_center').empty(); document.body.appendChild(el); document.getElementById("center_center").appendChild(el); } window.location.hash = href;//вот эти два значения я хоу сравнивать между собой //window.location.history = href;//они равны сперва,т.к. мы нажали на ссылку пункта меню и записали туда одинаковые линки alert(window.location.hash); //hash = window.location.hash;//записую значение в переменную //alert(hash); } </script> <script type="text/javascript"> setInterval("check_anchor()", 2000);//выполняем функцию проверки изменения window.location.hash через определенное время,т.к. перехватить события нажатия кнопок back/forward мы не можем function check_anchor() { //вот тут хочу сравнивать значения window.location.hash и window.location.history,если мы нажмем кнопку допустим назад,то window.location.hash изменится,а window.location.history останется прежним,и если они не равны(исключа #-ку у hash-а,то мы нажали назад стралку и вызываем ф-ю которая переходит по ссылке,грузит в блок значение window.location.hash) //вот тут все перезаписываем //window.location.hash = hash; //сперва записуем хеш в переменную,т.к. при переходе она потерялась,а в переменной осталась //hash = window.location.hash;//а теперь перезаписываем саму переменную тем же значением,т.к. при нажатии стрелке ман нужны изменения //alert(hash); /* if(window.location.history!=hash.replace("#",""))//сравниваем,если не равны,то переадресуем на то значение,которое получили с window.location.hash { skazatPrivet(hash.replace("#",""));//передаем ссылку без якоря } */ } </script> |
Сообщ.
#5
,
|
|
|
Все проблему решил сам...всем спасибо за внимание)
|