Хорошо, у меня есть этот скрипт, работающий на 99% от того, как он должен работать, но я не могу понять это немного.
Когда пользователь нажимает на ссылку, он берет значение href, обрезает его и дает мне последний сегмент URL. В этом примере я скажу его дом
так что мой скрипт затем берет домой и добавляет его к URL в адресной строке.
таким образом, он выглядит как http://www.site.com/user/s2xi/home
после того, как он сделал свое волшебство.
Но изначально у меня возникла проблема, когда из-за характера работы ссылок, я полагаю, он будет продолжать добавлять мой URL, например, http://www.site.com/user/s2xi#/home
, которого на моем сервере нет
Так что я смог избавиться от # и все вернулось к норме ... о, нет, не все всегда работает идеально с первой попытки ...
поэтому я понял, что мой сценарий добавляет имена ссылок вместо их замены ... о нет, что теперь?
мои ссылки теперь будут выглядеть так: http://www.site.com/user/s2xi/home/someOtherLink
это добавит новое имя ссылки к старому имени ссылки вместо его замены ...
мой сценарий:
var newHash = "",
shref = "",
content = '#content',
$c = $("#content"),
$cw = $("#content-wrapper");
$(".menu-link, #my-account-link").live('click', function(){
shref = $(this).attr("href").split("/");
parent.location.hash = $(this).attr("href");
window.location.hash = shref[5];
console.log(window.location.hash);
return false;
});
$(window).bind('hashchange', function(){
if (location.href.indexOf("#") > -1) {
location.assign(location.href.replace(/\/?#/, "/"));
}
newHash = window.location.hash;
//newHash = window.location.hash.substring(1);
//newHash = window.location.substring(1);
//console.log(newHash);
if(newHash)
{
$cw.find(content).fadeOut(200, function() {
$cw.load(newHash + " #content-wrapper", function() {
$c.fadeIn();
});
});
}
});
$(window).trigger('hashchange');
что может быть не так с логикой скрипта?