Sửa đổi URL trong JavaScript mà không cần tải lại trang

Sửa đổi URL trong JavaScript mà không cần tải lại trang
Sửa đổi URL trong JavaScript mà không cần tải lại trang

Thay đổi URL động bằng JavaScript

Khi làm việc với các ứng dụng web hiện đại, bạn có thể thấy mình cần sửa đổi URL mà không cần tải lại trang. Điều này có thể đặc biệt hữu ích để tạo trải nghiệm người dùng liền mạch.

Trong hướng dẫn này, chúng ta sẽ khám phá các phương pháp thay đổi phần URL sau tên miền, bao gồm các kỹ thuật cho phép bạn truy cập phần trước ký hiệu băm (#). Điều này đảm bảo tuân thủ các chính sách tên miền chéo trong khi đạt được sửa đổi URL mong muốn.

Yêu cầu Sự miêu tả
history.pushState() Thêm mục nhập mới vào ngăn xếp lịch sử phiên của trình duyệt, thay đổi URL mà không cần tải lại trang.
window.history.pushState() Cập nhật mục lịch sử hiện tại với dữ liệu trạng thái mới và URL mới.
window.location.hash Lấy hoặc đặt phần neo của URL, theo sau ký hiệu băm (#).
function changeURL(newPath) Xác định hàm cập nhật đường dẫn URL bằng API Lịch sử.
function updateHash(newHash) Xác định hàm cập nhật hàm băm URL.

Giải thích chi tiết về sửa đổi URL trong JavaScript

Kịch bản đầu tiên sử dụng history.pushState() phương thức, là một phần của API Lịch sử. Lệnh này cho phép nhà phát triển thêm mục nhập mới vào ngăn xếp lịch sử phiên của trình duyệt, thay đổi hiệu quả URL hiển thị trên thanh địa chỉ mà không cần tải lại trang. Trong kịch bản, const newURL = "/page2.php"; đặt đường dẫn mới và history.pushState(null, "", newURL); thay đổi URL thành đường dẫn mới này. Bằng cách gói history.pushState lệnh trong một chức năng như function changeURL(newPath), chúng tôi có thể cập nhật động URL nếu cần. Kỹ thuật này đặc biệt hữu ích cho các ứng dụng một trang (SPA) trong đó nội dung thay đổi linh hoạt mà không cần tải lại toàn bộ trang.

Địa chỉ tập lệnh thứ hai thay đổi hàm băm URL bằng cách sử dụng window.location.hash. Thuộc tính này nhận hoặc đặt phần neo của URL theo sau ký hiệu băm (#). Bằng cách thiết lập const hashValue = "newSection";window.location.hash = hashValue;, hàm băm URL sẽ thay đổi thành #newSection mà không cần tải lại trang. Cách tiếp cận này hữu ích khi điều hướng trong cùng một trang hoặc liên kết đến các phần cụ thể trong tài liệu. Ngoài ra, chức năng số 8 gói gọn chức năng này, giúp dễ dàng thay đổi phần băm của URL một cách linh hoạt. Cả hai tập lệnh đều cung cấp những cách liền mạch để sửa đổi URL và cải thiện trải nghiệm người dùng bằng cách tránh tải lại trang không cần thiết.

Sử dụng API lịch sử để thay đổi URL mà không cần tải lại

JavaScript với API lịch sử

const newURL = "/page2.php";
history.pushState(null, "", newURL);
// This changes the URL to /page2.php without reloading the page

function changeURL(newPath) {
    window.history.pushState({}, "", newPath);
}
// Example usage
changeURL("/page2.php");

Thao tác băm URL mà không cần tải lại

JavaScript để sửa đổi hàm băm

const hashValue = "newSection";
window.location.hash = hashValue;
// This changes the URL hash to #newSection

function updateHash(newHash) {
    window.location.hash = newHash;
}
// Example usage
updateHash("newSection");

Khám phá các phương pháp bổ sung để sửa đổi URL mà không cần tải lại

Một khía cạnh khác của việc sửa đổi URL mà không cần tải lại trang liên quan đến việc sử dụng replaceState() phương thức từ API Lịch sử. Trong khi pushState() thêm một mục lịch sử mới, replaceState() sửa đổi mục nhập lịch sử hiện tại. Điều này có thể đặc biệt hữu ích khi bạn muốn thay đổi URL mà không làm lộn xộn lịch sử của người dùng với nhiều trạng thái. Ví dụ: nếu bạn có một ứng dụng một trang có nội dung thay đổi thường xuyên, bạn có thể muốn cập nhật URL để phản ánh trạng thái hiện tại mà không cần thêm từng thay đổi vào lịch sử. Điều này giữ cho chức năng nút quay lại sạch sẽ và thân thiện với người dùng.

Để sử dụng replaceState(), bạn có thể viết một hàm tương tự như changeURL() nhưng thay vào đó hãy gọi history.replaceState() bên trong nó. Ví dụ, function replaceURL(newPath) có thể sử dụng history.replaceState(null, "", newPath); để cập nhật URL. Kỹ thuật này có giá trị trong việc cải thiện trải nghiệm người dùng bằng cách giữ URL đồng bộ với trạng thái của ứng dụng mà không tạo các mục lịch sử không cần thiết. Hơn nữa, nó cung cấp một cách hiệu quả hơn để quản lý lịch sử của trình duyệt, đặc biệt là trong các ứng dụng web động.

Các câu hỏi thường gặp về việc sửa đổi URL mà không cần tải lại

  1. Sự khác biệt giữa pushState()replaceState()?
  2. pushState() thêm một mục mới vào ngăn xếp lịch sử phiên, trong khi replaceState() sửa đổi mục nhập lịch sử hiện tại.
  3. Tôi có thể thay đổi hàm băm URL mà không cần tải lại trang không?
  4. Có, bằng cách sử dụng window.location.hash, bạn có thể thay đổi hàm băm URL mà không cần tải lại trang.
  5. Có thể chỉ sửa đổi các tham số truy vấn của URL không?
  6. Có, bạn có thể cập nhật các tham số truy vấn bằng cách sử dụng pushState() hoặc replaceState() phương pháp mà không cần tải lại trang.
  7. Có sửa đổi URL bằng pushState() ảnh hưởng đến nút quay lại?
  8. Có, mỗi cuộc gọi đến pushState() tạo một mục lịch sử mới, do đó nút quay lại sẽ điều hướng qua các trạng thái này.
  9. Tôi có thể sử dụng các phương pháp này trên tất cả các trình duyệt không?
  10. Hầu hết các trình duyệt hiện đại đều hỗ trợ API Lịch sử, bao gồm pushState()replaceState(), nhưng luôn kiểm tra tính tương thích.
  11. Làm cách nào để xử lý các sự kiện popstate khi sử dụng pushState()?
  12. Bạn có thể lắng nghe những popstate sự kiện để xử lý các thay đổi trong mục lịch sử hoạt động và cập nhật giao diện người dùng tương ứng.
  13. Điều gì xảy ra nếu định dạng URL không chính xác khi sử dụng pushState()?
  14. Nếu định dạng URL không chính xác, pushState() sẽ báo lỗi, vì vậy hãy đảm bảo URL của bạn được định dạng đúng.

Kết thúc chủ đề

Sửa đổi URL mà không cần tải lại trang trong JavaScript có thể cải thiện đáng kể trải nghiệm người dùng bằng cách tạo điều hướng mượt mà hơn và tránh tải lại trang không cần thiết. Sử dụng API Lịch sử pushState()replaceState() phương pháp cho phép nhà phát triển cập nhật URL một cách linh hoạt, giữ trạng thái ứng dụng được đồng bộ hóa mà không làm lộn xộn lịch sử của trình duyệt. Ngoài ra, việc thao tác hàm băm URL có thể mang lại khả năng điều hướng trong trang hiệu quả. Hiểu và triển khai các kỹ thuật này là điều cần thiết để phát triển các ứng dụng web hiện đại, đáp ứng.