web-dev-qa-db-fra.com

jQuery suppression de la valeur de hachage de l'URL

J'ai une URL codée en dur comme ceci:

https://bupacouk.bwa.local.internal.bupa.co.uk/cash-plan-quote/quoteAction.do?getBenefitLevelDetails=getBenefitLevelDetails&productPolicyId=7841#a1

Lorsque Javascript est activé, je ne veux pas la valeur de hachage à la fin, alors comment la supprimer?

Lorsque Javascript est désactivé, il doit être présent.

Merci.

ÉDITER

Voici le AJAX jQuery que j'utilise. Je passe donc l'URL codée en dur à la même page sur le serveur et en récupère une table:

        // Find href of current tab
    var $tabValue = $(this).attr('href');

    // AJAX new table in
    $.ajax({
        type: "GET",
        cache: false,
        url: $(this).attr('href'),
        success: function(data){

        // Find benefit wrap
        $(data).find('.benefitWrap').each(function(){
            // get the contents
            var $benefitWrap = $(this).html();
            // replace contents on page
            $('.benefitWrap').replaceWith($('<div class="benefitWrap">' + $benefitWrap + '</div>'));

        });

       }

    });
17
RyanP13

original

Cela dépend de ce que fait la valeur de hachage. S'il déplace simplement le document vers le bas pour #a1, il vous suffit de définir scrollTop sur 0 après le chargement probable du document.

éditer

la recherche d'autres questions stackoverflow,

parent.location.hash = ''

devrait le faire, mais peut-être recharge la page (vous devez la tester)

En dehors de cela, je vous conseille de le gérer pendant/avant vos AJAX appels - i.e.

if (hash != 'a1'){ doAjax(); } //pseudocode obviously.

modifier 2 avec un code basé sur le code publié

Ou, si vous avez juste besoin d'appeler AJAX avec urlsans hash, vous pouvez le supprimer en chaîne, qui appelle jQuery, non?

var $tabValue = $(this).attr('href');
var $withoutHash = $tabValue.substr(0,$tabValue.indexOf('#'));

nous obtenons essentiellement un href avant le premier #

28
Adam Kiss

Un simple window.location.hash="" le fera.

14
Steve Chab

Cela pourrait être utile à quelqu'un qui pose la même question, comment extraire les données après un # dans un href.

this.hash.slice(1);

Cela donnera # 123 comme 123.


Edit: Je devrais probablement noter que si vous calculez des nombres à partir de ces données, il vaut mieux utiliser parseInt(this.hash.slice(1)); sinon vous obtiendrez des résultats amusants.

8
Spiderkeg

Cela fonctionne pour moi. J'ai ajouté un ! pour empêcher la page de défiler vers le haut.

window.location.hash="!";
1
Alvin Konda