Эй, очень умные люди!
Я был озадачен этим, пытался неделю и не мог найти логического решения.
В основном всякий раз, когда пользователь нажимает на два разных набора ссылок, я хочу добавить подготовленный URL-адрес.
Пока в моем коде это происходит
$(selecter a.1).live('click', function(){
window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}
URL-адрес будет выглядеть так: http://www.site.com/!#/username/page1/
затем я вызываю функцию для обнаружения изменения хэша в URL-адресе и возвращаю URL-адрес обратно к тому, каким он должен быть:
$(window).bind('hashchange', function(){
hash = window.location.hash;
//if( hash.indexOf( "/files/" ) == 6 )
//newHash = window.location.hash.substring(3).replace(usr + '/files', '').replace('/', '.php');
//else
newHash = window.location.hash.substring(3).replace(usr + '/', '').replace('/', '.php');
//newHash = window.location.hash.replace(dump, origHash, 'g');
console.log(newHash);
if (newHash) {
$wrap.find("#main-content").fadeOut(200, function() {
$wrap.load(newHash + " #main-content", function() {
$content.fadeIn(function() {
$wrap.animate({
height: baseHeight + $content.height() + "px"
}, 500);
});
});
});
}
});
проблем нет, проблема в том, что пользователь нажимает на второй набор ссылок, которые я хочу добавить немного по-другому к URL-адресу.
$(selecter a.2).live('click', function(){
window.location.hash = '!/' + usr + '/' + $(this).attr('href').replace('.php', '/');
}
будет выглядеть так: http://www.site.com/!#/username/files/sub-page/
href ссылок выглядит так: href="files/sub-page.php"
моя проблема заключается в том, что при привязке окна к хеш-изменению оно попытается подготовить URL-адрес обратно в исходное «состояние», которое применимо только к первому набору ссылок.
У меня возникла идея, почему бы просто не заменить исходное значение href на window.location.hash, но потом я понял, что... что, если пользователь перезагрузит страницу?? Ну да! исходный хэш будет потерян! и URL-адрес зависит от обнаружения изменения хеша, чтобы он мог загрузить правильную страницу php.
Итак, затем я подумал, что, может быть, я могу каким-то образом вырезать все, кроме последнего слова в URL-адресе, и выполнить замену ('/', '.php'), чтобы добавить расширение...
Хорошо, но другая проблема заключается в том, что в URL-адресе он указывает на files/sub-page.php, который находится в каталоге files/.
Изначально у меня было все в одном каталоге, и я хотел вручную добавить файлы/ к URL-адресу, но столкнулся с проблемами с той же логикой, поэтому я решил переместить их в папку с именем файлы/и выяснить, как обмануть js, чтобы он оставил этот дир путь там...
Хорошо, это моя история...
Могу ли я получить некоторую помощь?