11 of 17 menu

Lỗi chuyển hướng theo liên kết trong JavaScript

Hãy cùng phân tích lỗi liên quan đến việc chuyển hướng theo liên kết không mong muốn. Giả sử chúng ta có liên kết sau đây làm ví dụ:

<a href="">link</a>

Lấy liên kết của chúng ta vào một biến:

let link = document.querySelector('a');

Gắn một trình xử lý sự kiện nhấp chuột vào liên kết của chúng ta:

link.addEventListener('click', function() { console.log(this.textContent); });

Và đây là nơi chúng ta gặp phải điều bất ngờ. Mã được viết đúng, tuy nhiên, đầu ra không xuất hiện trong console. Vấn đề là khi nhấp chuột, trình duyệt thực hiện chuyển hướng theo liên kết. Vì không có gì được chỉ định trong thuộc tính href, nên liên kết chỉ dẫn đến trang hiện tại.

Điều này có nghĩa là việc nhấp vào liên kết dẫn đến việc tải lại trang. Tức là dữ liệu của chúng ta được xuất ra console, sau đó trang được tải lại, và console trở nên trống rỗng.

Nếu quan sát kỹ, bạn có thể thấy rằng tại thời điểm nhấp chuột, dữ liệu xuất hiện trong console trong chốc lát, rồi biến mất. Đây chính là dấu hiệu đặc trưng của lỗi này.

Hãy xem cách chúng ta có thể giải quyết vấn đề này.

Giải pháp thứ nhất

Trong thuộc tính href của liên kết cần đặt dấu thăng (#). Điều này sẽ làm cho liên kết trỏ đến một vị trí cụ thể trên trang hiện tại và khi nhấp vào liên kết sẽ không có việc tải lại trang. Hãy thực hiện điều đó:

<a href="#">link</a>

Giải pháp thứ hai

Một cách tiên tiến hơn là hủy hành động mặc định bằng phương thức preventDefault:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối