Is it possible not to push unnecessary state when clicking an <a> element?
- Langage dominant
- JavaScript
- Étoiles
- 31.5k
- Forks
- 5.8k
- Merge moyen
- 9 j 8 h
- PR mergées (30 j)
- 2
Description
## 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'
})
})
}
```
Guide de contribution
Ouvrir le guide de contribution
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.
Évaluation
- Stack technique
- javascript
- Domaine
- frontend, web-dev
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100