Bằng cách bật chế độ HTML5 trong AngularJS, dịch vụ $location
sẽ ghi đè URL để xóa hashbang khỏi chúng. Đây là một tính năng tuyệt vời mà sẽ giúp tôi với ứng dụng của tôi, nhưng có một vấn đề với dự phòng của nó để chế độ hashbang. Dịch vụ của tôi yêu cầu xác thực và tôi buộc phải sử dụng cơ chế xác thực bên ngoài từ ứng dụng của mình. Nếu người dùng cố gắng truy cập URL cho ứng dụng của tôi bằng hashbang trong đó, trước tiên nó sẽ chuyển hướng họ đến trang xác thực (sẽ không bao giờ chạm vào dịch vụ của tôi trừ khi được xác thực thành công), rồi chuyển hướng họ trở lại ứng dụng của tôi. Là thẻ băm chỉ được nhìn thấy từ phía khách hàng, nó sẽ thả ra bất cứ phần nào của các tuyến đường đến sau khi họ nhấn máy chủ của tôi. Khi chúng được xác thực, chúng có thể nhập lại URL và nó sẽ hoạt động, nhưng đó là lần đầu tiên sẽ gây gián đoạn cho trải nghiệm người dùng.AngularJS Chế độ HTML5 làm suy giảm toàn bộ trang tải lại thay cho hashbang
Câu hỏi của tôi là, có cách nào để đi từ $location.html5Mode(true)
đến dự phòng tải lại trang đầy đủ cho các trình duyệt không hỗ trợ, bỏ qua phương pháp định tuyến hashbang hoàn toàn trong AngularJS không?
So sánh tốt nhất các triển khai có sẵn của những gì tôi đang nhắm đến sẽ là một cái gì đó như duyệt qua các thư mục trên github.com. Nếu trình duyệt hỗ trợ viết lại URL mà không bắt đầu làm mới trang, trang sẽ tải không đồng bộ các phần cần thiết. Nếu trình duyệt không hỗ trợ nó, khi người dùng nhấp vào một thư mục, việc làm mới toàn bộ trang sẽ xảy ra. Điều này có thể đạt được với AngularJS thay vì sử dụng chế độ băm không?
Bạn đã bao giờ đưa ra một giải pháp cho điều này? Tôi đang đối mặt với một tình huống tương tự. – Jonathan