Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#2,531 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 8 dias

@KashviYadav09 já está trabalhando nisso.

Desde 19/1/2026.

  • #2668 de @KashviYadav09 — aberto

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
45/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
javascript
Domínio
frontend, web-dev

Direção de pesquisa

Comece localizando o código-fonte JavaScript que contém e.prototype.onchange e leia o tratamento de click e popstate. Reproduza os casos de anchor/history descritos na issue e, em seguida, verifique se a navegação para o mesmo local não faz nada e se a navegação para a URL anterior do histórico se comporta conforme proposto.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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'
          })
        })
      }
Linguagem predominante
JavaScript
Estrelas
31.5k
Forks
5.8k
Merge médio
7d 18h
PRs com merge (30d)
9

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de docsifyjs/docsify

Todas as issues de docsifyjs/docsify

Issues semelhantes

Mais issues de JavaScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.