Tôi cần tắt nút quay lại của trình duyệt trong ứng dụng trang đơn của mình. Tôi đã thử sử dụng các phương pháp như onhashchange hoặc window.history.forward nhưng chúng không hoạt động (lý do có thể là url đó không bị thay đổi tại đây) Xin vui lòng trợ giúp! Cảm ơn.Vô hiệu hoá nút quay lại trình duyệt cho một ứng dụng trang
Trả lời
Tôi làm việc trong AngularJS xây dựng một Ứng dụng một trang và tôi muốn vô hiệu hóa hoặc ngăn chặn nút quay lại của trình duyệt, bởi vì ứng dụng của tôi có các nút và neo cho tất cả lưu trữ vào ứng dụng của tôi.
Tôi đã tìm kiếm và kiểm tra nhiều mã, và điều này là dễ dàng để ngăn chặn nút quay lại của trình duyệt và mã sau hoạt động cho tôi.
window.onpopstate = function (e) { window.history.forward (1); }
Khi lịch sử phát hiện history.back đầu tiên()
window.onpopstate
được thực thi, sau đó sau thời điểm này bất kỳ trở lại hoặc chuyển tiếp trong lịch sử được phát hiện cho onpopstate biến cố.
Tôi không nghĩ rằng việc tắt nút quay lại sẽ thực sự hoạt động. Vì vậy, nhiều lý do cho cùng nhưng đã nhìn vào this. giải pháp tốt nhất của bạn sẽ cảnh báo người sử dụng sử dụng
window.onbeforeunload = function() { return "You will leave this page"; };
Đã thử điều này. Nó không hoạt động trong ứng dụng của tôi vì sự kiện onbeforeunload không được kích hoạt trên nút quay lại. – Bhumika107
Bạn về mặt kỹ thuật không thể vô hiệu hóa các nút Back trên trình duyệt của ai đó, tuy nhiên, bạn có thể làm cho nó để nút không có sẵn hoặc tiếp tục tải cùng một trang.
Bạn có thể kiểm tra xem nó ở đây Disabling the Back Button
Tôi không thể tải lại cùng một trang như phiên đang tham gia do đó bao gồm các phức tạp. Làm thế nào tôi có thể làm cho nút không có sẵn? – Bhumika107
bạn có thể thực hiện việc này bằng cách sử dụng javascript [Đã tắt] (http://www.htmlgoodies.com/tutorials/buttons/article.php/backbutton.html) – Shekhar
Bạn chưa nhận được bất kỳ liên kết nào bên cạnh thông báo này: Chúng tôi không thể tìm thấy trang bạn đã yêu cầu trên HTMLGoodies.com. – Bhumika107
Bạn có thể chuyển hướng cùng một trang trên bấm vào nút quay lại, trang của bạn sẽ nhận được làm mới nhưng bạn sẽ có trên cùng một trang mỗi lần
Giống như tôi đã nói ở trên câu trả lời, tôi không thể làm mới trang. – Bhumika107
Nếu làm mới được chấp nhận, làm cách nào để thực hiện việc này? Làm cách nào để một người nắm bắt sự kiện nút quay lại ngay từ đầu? – Paul
Cách tốt hơn là tạo một ứng dụng trang đơn và hiển thị và ẩn cùng một trang chứa theo yêu cầu. gọi ajax không bao giờ fwd để trang tiếp theo. –
tôi nghĩ rằng "onpopstate" không làm việc nếu người dùng kiên trì bấm
chỉ cần sử dụng
window.onbeforeunload = function() { window.history.forward(1); };
hoặc nếu u muốn cảnh báo người sử dụng
window.onbeforeunload = function() { return "Back button is not available!"; window.history.forward(1); };
Nếu bạn sử dụng AngularJS , các mã sau đây nên làm các trick. Bạn phải thêm mã này vào tệp hoặc tệp app.js nơi bạn tiêm tất cả các phụ thuộc của mình
var myApp = angular.module('myApp', ['ngMask', 'ngRoute', 'ngAnimate', 'ngSanitize', 'ngTouch', 'ngCookies', 'ngMessages', 'ui.router', 'ui.grid', 'ui.directives', 'ui.filters', 'ui.bootstrap', 'angularUtils.directives.dirPagination']);
myApp.run(function($rootScope, $route, $location) {
var allowNav = false;
var checkNav = false;
$rootScope.$on('$stateChangeSuccess', function (event, toState, toStateParams, fromState, fromStateParams) {
allowNav = checkNav;
checkNav = true;
});
$rootScope.$on('$locationChangeStart', function (event, next, current) {
// Prevent the browser default action (Going back)
if (checkNav) {
if (!allowNav) {
event.preventDefault();
} else {
allowNav = false;
}
}
});
});
Tôi có một kịch bản khác mà chúng tôi muốn đưa vào danh sách đen một vài trang. Cho phép hầu hết SPA sử dụng nút quay lại và một vài trang để không cho phép. Tôi đã tạo ra một dịch vụ để ghi đè lên chức năng của popstate. Tuy nhiên, tôi đã gặp phải một vấn đề kỳ lạ khi tiến lên phía trước.
import { RouteAddress } from 'app/common/constants/routes.constants';
import { Injectable } from '@angular/core';
import { StringUtilsService } from 'app/common/services/utilities/string-utils.service';
@Injectable()
export class LocationStrategyService {
private static shouldSkip = false;
// Array of route urls that we can't go back to.
private static blackListed = [
RouteAddress.ScreeningStepTwoCreditAvailability,
RouteAddress.ScreeningStepTwo];
constructor() {
window.onpopstate = this.overridingPopState;
}
overridingPopState(event: any) {
// This was having issue scoping
const isBlackListed = (navigatingTo: string): boolean => {
navigatingTo = navigatingTo.split('?')[0];
const pathFound = LocationStrategyService.blackListed.find((route) => navigatingTo.endsWith('/' + route));
return pathFound !== undefined && pathFound.length > 0;
}
// have black listed route and determing if able to go back
if (!LocationStrategyService.shouldSkip && isBlackListed(event.currentTarget.location.pathname)) {
window.history.forward();
// Protecting against a going forward that will redirect
LocationStrategyService.shouldSkip = isBlackListed(window.location.pathname);
} else {
LocationStrategyService.shouldSkip = false;
}
}
}
Sau đó, trong hàm dựng AppComponent thêm LocationStrategyService và nó sẽ gọi nó khi bắt đầu.
import { LocationStrategyService } from 'app/common/services/utilities/location-strategy.service';
export class AppComponent {
constructor(
private locationStrategyService: LocationStrategyService) {}
}
- 1. kiểm soát hoặc Vô hiệu hoá trình duyệt Nút Quay lại với Javascript hoặc AngularJS
- 2. Vô hiệu hóa nút quay lại của trình duyệt trong C#
- 3. Trình duyệt nút quay lại GWT
- 4. Vô hiệu hoá nút điều hướng ngược lại
- 5. Nút Quay lại (Hành vi Trình duyệt)
- 6. Nút quay lại trình duyệt không điền giá trị thả xuống trong ứng dụng MVC
- 7. Nút quay lại trình duyệt sau khi đăng xuất
- 8. ASP.net mô phỏng nút quay lại trình duyệt
- 9. Nút gửi biểu mẫu vẫn bị vô hiệu hóa khi sử dụng nút Quay lại trong Firefox
- 10. Trang làm mới nút quay lại
- 11. Góc js- Mô phỏng nút quay lại/chuyển tiếp của trình duyệt tắt
- 12. Tải lại trang trên nút quay lại
- 13. Vô hiệu hoá Nhóm Nút Khởi động Twitter
- 14. Trình duyệt ASP.NET hiển thị "trang web đã hết hạn" cho nút quay lại (sau khi đăng lại)
- 15. Ember.js với Rails4: trình duyệt nút quay lại tai nạn ứng dụng ember
- 16. Quay trở lại nút trong một trang
- 17. Trình duyệt Blackberry quay lại nhấp vào
- 18. Ứng dụng web HTML5 một trang không nên có nút quay lại?
- 19. Tải lại trang trên nút quay lại/tiến trình của trình duyệt trong AngularJS bằng bộ định tuyến ui
- 20. Vô hiệu hoá cửa sổ trình duyệt Thay đổi kích thước
- 21. lập trình vô hiệu hoá một nút trên hộp thoại jquery ui cho đến khi cuộc gọi ajax hoàn tất?
- 22. Xác nhận nút quay lại trình duyệt khác nằm trên trang
- 23. Vô hiệu hóa nút Quay lại và Chuyển tiếp trên UIToolBar trong UIWebview
- 24. Hiển thị nút Quay lại để quay lại như nút quay lại trình duyệt khi không ở trong đường dẫn nhà
- 25. Khởi tạo plugin JQuery trên nút quay lại trình duyệt cho Turbolinks Rails 5
- 26. Vô hiệu hoá gỡ lỗi Visual Studio ASP.Net khỏi khởi chạy trình duyệt
- 27. Vô hiệu hoá gói ngoại lệ WPF để gỡ lỗi
- 28. Nút quay lại sau khi liên kết sâu đi vào ứng dụng không quay lại vị trí xuất phát từ
- 29. Ngăn các nút quay lại và chuyển tiếp tải lại trang trong một ứng dụng trang đơn
- 30. Nút Quay lại Trình duyệt sử dụng thước đo góc hoặc javascript
Cảm ơn rất nhiều. Nó hoạt động tốt. Có cách nào để tắt nút làm mới không? – Bhumika107
Điều này hoạt động tốt nhưng trong trường hợp khác tôi đang sử dụng window.history.back() bằng cách bấm nút cho trang trước đó. nó dừng việc này cũng ở trên cùng một trang, không quay lại. làm thế nào tôi có thể giải quyết? –
Tôi đã sử dụng cách tiếp cận này nhưng trạng thái của ứng dụng đã thay đổi nhưng url không thay đổi! bất kỳ ý tưởng ? – Rachmaninoff