Ví dụ tốt nhất về những gì tôi đang cố gắng làm là hệ thống điều hướng của YouTube. Nếu bạn nhấp vào liên kết tới video, thanh màu đỏ ở đầu trang sẽ hiển thị cho biết số lượng trang được yêu cầu đã tải. Khi trang được yêu cầu tải xong, ngay lập tức sẽ thay thế nội dung của trang trước đó và video bắt đầu tải. Một số điều đang xảy ra để làm cho điều này liền mạch nhất có thể.Làm cách nào để tải các trang có JavaScript thay vì chuyển hướng?
- URL được sửa đổi để khớp với trang mới.
- Không có chuyển hướng (Điều này rất khó giải thích).
- Trang mới được thêm vào Lịch sử.
- Điều hướng quay lại và Forth hoạt động liền mạch.
tôi sửa đổi URL với:
window.history.pushState("object or string", "Title", "/new-url");
Tôi đã cố gắng để tải trang bạn yêu cầu với:
$.("html").load("newPage.php", function(){});
này sẽ thay thế mã toàn bộ trang trước với mã trang mới. Một số vấn đề với điều này:
Điều hướng quay lại hoạt động với URL, nhưng trình xử lý sự kiện phải phát hiện và tải trang thích hợp. Tôi sử dụng này:
$(window).on('popstate', function() { $('html').load("../"+window.location.pathname, {page:"account"}); });
- Sử dụng
$.load()
không thể (không nên) tải bất kỳ kịch bản mới thẻ thẻ script vìSynchronous XMLHttpRequest on the main thread is deprecated
Những gì tôi muốn để có thể làm:
- Liền mạch tải trang không có chuyển hướng bằng cách sử dụng JQuery và AJAX
- Để trang mới có thể có tập lệnh mới và thẻ PHP (PHP có thể là không thể và tôi có thể phải sử dụng AJAX để nhân rộng điều này).
Nguồn:
Updating address bar with new URL without hash or reloading the page
Load HTML page dynamically into div with jQuery
JS or Jquery browser back button click detector
Synchronous XMLHttpRequest on the main thread is deprecated
Chào mừng bạn đến với SO - bạn đã thử những gì? Chúng tôi rất sẵn lòng trợ giúp nhưng không thể viết mã cho bạn –
Tôi đã hiển thị những gì tôi đã thử trong các phần được mã hóa, nhưng các phương pháp được sử dụng không được dùng nữa và khá cẩu thả. Tôi đang tìm một thư viện các loại có thể làm tất cả những công việc khó khăn cho tôi. Bạn có thể thấy các nguồn của tôi và tại sao chúng không hoạt động ở phía dưới. – Damen
Điều này có thể không liên quan đến bạn, vì bạn cụ thể trong các thẻ của bạn, nhưng sẽ không phải là một khung MVC front-end như AngularJS giải quyết rất nhiều vấn đề của bạn? (có thể phải bỏ PHP cho các lượt xem). – Drumbeg