JavaScript - Как я могу сказать браузеру Chrome, Firefox, Safari, чтобы я отключил кнопку обновления? - PullRequest
2 голосов
/ 16 марта 2012

У меня запущено логическое приложение, где мне нужно хранить var algorithmToApply=1 or etc;

Где каждому из моих значений назначен относительный алгоритм.Основная проблема заключается в том, что при тестировании людей, нажимающих на кнопку обновления браузера, происходит сбой всей логики моего приложения.

algorithmToApply = 1 ; // Thinking
algorithmToApply = 2 ; // Waiting
algorithmToApply = 11 ; // Downloading
algorithmToApply = 100 ; // Booting
algorithmToApply = 900 ; // Kernel prepare
algorithmToApply = 0 ; // User refresh button is a BUG

Как я могу использовать браузеры запросов JavaScript (Opera или Chrome, опционально Firefox / Safari), чтобы я могпользователь не может нажать кнопку обновления (однако он всегда может выключить или закрыть экземпляр моего браузера).

Возможно ли это?Если да, то как?

Последующие действия: (лучшее, что мы можем сделать)

/* @WARNING: Do not refresh */
$(window).bind('beforeunload', function(e) {  
  if (mystatus>=2) {
   return "WARNING: Your status is .... If you refresh now, software will lose all the status.";
  } else {
   return "WARNING: Your status is not ... You can refresh.";
  }      
});

1 Ответ

4 голосов
/ 16 марта 2012

Это невозможно.

Однако вы можете добавить beforeunload прослушиватель, который запрашивает подтверждение:

var algorithmToApply = 0;
window.onbeforeunload = function() {
    if (algorithmToApply !== 0) { /* Anything ..*/
        return 'A task is pending. Do you really want to leave?';
    }
};
...