Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Is it possible not to push unnecessary state when clicking an <a> element?

Ouverte
#2,531 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

@KashviYadav09 y travaille déjà.

Depuis le 19/1/2026.

  • #2668 par @KashviYadav09 — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
javascript
Domaine
frontend, web-dev

Piste de recherche

Commencez par localiser le code source JavaScript contenant e.prototype.onchange et lisez sa gestion de click et de popstate. Reproduisez les cas d’ancre/historique décrits dans l’issue, puis vérifiez qu’une navigation vers le même emplacement ne fait rien et qu’une navigation vers l’URL d’historique précédente se comporte comme proposé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

needs discussion

Feature request

Problem or desire

I click an element which has the href just like the location.href when setting routerMode to "history", and then it pushes a new state which is not necessary.
It might be better to use history.back() than history.pushState() when clicking an element which has the href just like the location.href of the previous page in session history.

Proposal

Do nothing when clicking an element which has the href just like the location.href.
Use history.back() when clicking an element which has the href just like the location.href of the previous page in session history.

Implementation

Just change the onchange function to something like this:

e.prototype.onchange = function (i) {
        void 0 === i &&
        (i = d),
        p(
          'click',
          function (e) {
            var n = 'A' === e.target.tagName ? e.target : e.target.parentNode;
            n &&
            'A' === n.tagName &&
            !g(n.href) &&
            (
              e.preventDefault(),
              n = n.href,
              n === location.href ? 1 :      //Add
              n === hrefPre ? window.history.back() :      //Add(hrefPre is used to record the href before)
              window.history.pushState({
                key: n
              }, '', n),
              i({
                event: e,
                source: 'navigate'
              })
            )
          }
        ),
        p('popstate', function (e) {
          i({
            event: e,
            source: 'history'
          })
        })
      }
Langage dominant
JavaScript
Étoiles
31.5k
Forks
5.8k
Merge moyen
2 j 14 h
PR mergées (30 j)
5

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de docsifyjs/docsify

Toutes les issues de docsifyjs/docsify

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.