JQuery.address, как удалить # из URL (javascript window.location удалить #) - PullRequest
3 голосов
/ 25 ноября 2010

Мне нужно удалить # из URL, когда значение моего event.value == к /.У меня есть лайтбокс с jquery.address, в котором хранятся ссылки на открытые изображения, и когда я закрываю его, мне нужно удалить знак #, потому что это причина прокрутки вверху окна.

Мне удалось удалить знак # следующим образом:window.location.href.slice (0, -1);но, как вы можете видеть в приведенном выше коде, это вызывает перезапись URL-адреса при загрузке страницы, а не только после моего события.

Как я могу связать этот javascript только тогда, когда произойдет полное завершение, как эта функция вызываетсятолько когда я закрываю лайтбокс.

Я прилагаю свой код с комментариями.спасибо всем

$.address.change(function(event) {
    curLink = event.value;
    if(curLink != '/') {

    // here my stuff, jquery.address generates url with reference 

    // ex: mysite.com/cat/subcat/page.html#one

    } else {  

        $('#element').animate({opacity:"0"},{duration:100, easing:"quartEaseOut", complete: function () {

        // here I need to remove the hash only after the complete 

        // ex: mysite.com/cat/subcat/page.html#  >  mysite.com/cat/subcat/page.html

        window.location.href.slice(0, -1);           
        $(this).hide(); 
    }});   
  }   
});

Ответы [ 5 ]

2 голосов
/ 17 февраля 2011

попробуйте

newHash = window.location.hash.substring(1);

console.log(newHash);

если у вас есть якорь, то он обычно добавляется в начале URL, поэтому, если удалить первый символ, он больше не будет иметь проблемы.

или если вы можете сделать это так, я думаю, это то, что вам может понадобиться

newHash = window.location.hash.replace('#', '');

console.log(newHash);
2 голосов
/ 25 ноября 2010

Использование window.location.hash = '' должно удалить его напрямую, в противном случае есть несколько хороших плагинов, которые открывают множество функций для работы с URL-адресами (например, http://ajaxcssblog.com/jquery/url-read-request-variables).

1 голос
/ 06 сентября 2013

Вы также можете использовать это (что полностью удаляет хэш и очищает URL-адрес прямо назад)

history.pushState("", document.title, window.location.pathname);

Что меняет

http://www.google.com/#top

на

http://www.google.com/
1 голос
/ 17 мая 2013

Я обнаружил, что изменение значения после хэша работает лучше всего для сценария, аналогичного вашему Это должен быть хеш, который еще не существует на вашей странице.

function removeDeepLink(event) {
    window.location.hash = 'foo';
};
0 голосов
/ 25 ноября 2010

window.location.hash = '' не работают в моем случае.

window.location.href.slice(0, -1); работает! проблема, которую я не могу решить, состоит в том, как я могу связать эту инструкцию JavaScript только после полного события jQuery (к настоящему моменту это происходит при загрузке страницы).

Я думаю, что сейчас это глупый вызов JavaScript после jQuery

спасибо

...