Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#2,531 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 8 ngày

@KashviYadav09 đang làm issue này rồi.

Từ ngày 19/1/2026.

  • #2668 của @KashviYadav09 — đang mở

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
45/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
javascript
Lĩnh vực
frontend, web-dev

Hướng nghiên cứu

Bắt đầu bằng cách xác định mã nguồn JavaScript chứa e.prototype.onchange và đọc cách xử lý click và popstate của nó. Tái hiện các trường hợp anchor/history được mô tả trong issue, sau đó xác minh rằng việc điều hướng đến cùng vị trí không làm gì cả và việc điều hướng đến URL trước đó trong lịch sử hoạt động như đề xuất.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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'
          })
        })
      }
Ngôn ngữ chính
JavaScript
Star
31.5k
Fork
5.8k
Merge trung bình
7 ngày 18 giờ
Pull request đã merge (30 ngày)
9

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của docsifyjs/docsify

Tất cả issue của docsifyjs/docsify

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.