Cordova используется, но не при вводе файла

#jquery #cordova

#jquery #кордова

Вопрос:

Я использую cordova и функцию onResume. Причина в том, что я хочу перезагрузить приложение, когда оно запускается из фона. Это работает нормально! Теперь проблема заключается в том, когда пользователь выбирает файл с полем ввода. Очевидно, что при выборе файла приложение также перемещается в фоновом режиме. Поэтому, когда файл выбран, приложение перезагружается, и выбранный файл исчезает.

Функция возобновления:

  <script>
  document.addEventListener("deviceready", function() {
      document.addEventListener("resume", onResume, false); 
  }, false);
  function onResume() {
    setTimeout(function() {
      window.location.reload(false); 
    }, 0);
  }
</script>
  

Возможно ли отключить функцию возобновления при выборе файла?

Комментарии:

1. Да, просто используйте флаг или логическую переменную, что-то вроде isFileSelected = true , и если isFileSelected === true тогда вы не перезагружаете.

2. Спасибо за ваш ответ. Можете ли вы объяснить, как установить флаг, когда пользователь выбирает файл?

Ответ №1:

Вам нужно создать флаг или логическую переменную, которая определяет, когда используется файловый ввод.

 <input type="file" id="myFileSelection">
  

jQuery — Запрос

 $('#myFileSelection').click(function() {
  window.isFileSelected = true;
});
  

Затем просто измените свою логику onResume, чтобы включить флаг.

 document.addEventListener("deviceready", function() {
  document.addEventListener("resume", onResume, false); 
}, false);
function onResume() {
  // if isFileSelected is true stop the code here with 'return false', will not execute the setTimeout
  if (window.isFileSelected) {
    // set this to false to reset the variable
    window.isFileSelected = false;
    return false;
  }
  setTimeout(function() {
    window.location.reload(false); 
  }, 0);
}
  

Я не тестировал этот код, но, как правило, именно так вы можете это сделать.