2016-02-10 12 views
6

Tôi đã đọc các bài đăng khác thảo luận các cách mà các công nghệ khác dọn sạch cookie trình duyệt khi trình duyệt đóng cửa, nhưng không ai trong số chúng hiển thị cách để AngularJS thực hiện việc này. Làm cách nào để kích hoạt phương pháp xóa cookie trong AngularJS để chạy khi trình duyệt bị đóng?AngularJS cách để xóa tất cả cookie khi trình duyệt bị đóng

Trong AngularJS 1.4.8, bạn có thể xóa cookie bằng cú pháp $cookies.remove('keyname'). Tôi có thể viết một phương pháp để loại bỏ tất cả các cookie theo tên. Nhưng làm cách nào để đảm bảo rằng phương pháp xóa cookie được gọi bất cứ khi nào trình duyệt bị đóng? Cú pháp có khác gì không nếu tôi muốn phương thức được gọi khi tab trình duyệt bị đóng?


nỗ lực không ngừng:


Theo @ của User2341963 gợi ý, tôi thêm mã loại bỏ cookie đến phương pháp run trong module chính của ứng dụng. Mã chính xác tương tự chạy đúng khi tôi đặt nó ở phương thức logout() ở nơi khác trong ứng dụng, nhưng khi tôi đặt điểm ngắt trong trình gỡ lỗi firefox và đóng trình duyệt, tôi thấy mã loại bỏ cookie không bao giờ chạy khi trình duyệt bị đóng. Tôi thực hiện những thay đổi cụ thể nào đối với mã để gỡ bỏ tất cả các cookie của AngularJS khi trình duyệt bị đóng?

Đây là mã cho các mô-đun chính của ứng dụng, bao gồm cả run() phương pháp:

angular 
    .module('hello', [ 'ngRoute', 'auth', 'home', 'secure', 'public1', 'navigation' ]) 
    .config(

      function($routeProvider, $httpProvider, $locationProvider) { 

       $locationProvider.html5Mode(true); 

       $routeProvider 
       .when('/', { 
        templateUrl : 'js/home/home.html', 
        controller : 'home' 
       })//plus other routes 
       .otherwise('/'); 

       $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 

      } 
    ).run(['$cookies', '$window', '$log', function($cookies, auth, $window, $log) { 

     //other stuff 

     $window.onbeforeunload = function() { 
      // Clearing all cookies now! 
      $cookies.remove("AUTH1"); 
      $cookies.remove("AUTH2"); 
      $cookies.remove('procStep'); 
      $cookies.remove('usrname'); 
      $cookies.remove('exists'); 
      $cookies.remove('wid'); 
     }; 
    }]); 
+0

có lẽ một cái gì đó như [làm thế nào để kích hoạt một chức năng trên cửa sổ gần bằng angularjs] (http://stackoverflow.com/questions/30345446/how-to-trigger-a-chức năng-trên-cửa sổ-close-sử dụng-angularjs)? Về cơ bản, hãy cài đặt hàm window.onbeforeunload – user2718281

+2

sử dụng cookie phiên. Đừng lo lắng về việc dọn dẹp – charlietfl

+0

@ user2341963 Tôi nên đặt bộ điều khiển đó vào? Ứng dụng này có nhiều bộ điều khiển. Module chính cho ứng dụng chỉ có 'module()', '.config()' và '.run() {}' trong đó. – CodeMed

Trả lời

1

Nếu bạn chỉ cần cookie, bởi vì bạn cần nó sẽ được gửi đến máy chủ phụ trợ, bạn có thể sử dụng sự kiện $destroy của bộ điều khiển chính.

Sử dụng $on.$destroy

Sự kiện này được gọi khi bộ điều khiển sắp bị hủy.

tùy chọn khác là sử dụng angularjs sessionStorage

Lưu trữ Phiên lấy ra khi cửa sổ được đóng tự động

+0

Tôi không thể xác thực câu trả lời của bạn vì tôi hiện đang sử dụng một nội dung khác. Nhưng cảm ơn bạn và + 1 vì đã cố gắng giúp đỡ người khác bằng câu hỏi cũ này. Một người nào khác xin vui lòng xác nhận điều này và gửi bình luận cho biết xác nhận. – CodeMed

Các vấn đề liên quan