Свойство Exists вызывает сбой скрипта

У меня есть код, который ищет указанную клавишу на экранной клавиатуре и нажимает ее при обнаружении. Я столкнулся с проблемой, когда иногда свойство Exists не существует, и это приводит к сбою моего теста.

function findKey(propertyName, character, shiftMode) {
  var keyboard = getKeyboard()

  var key = keyboard.findChild(propertyName, character, 2)

  if (key.Exists) { // Crashes on this line.
    keyboard.set_ShiftMode(shiftMode)
    key.Click()

    return true
  }

  return false
}

Действительно сумасшедшая вещь заключается в том, что когда я добавляю точку останова в эту строку и проверяю ее в инспекторах, у инспектора Locals есть свойство, но Watch List говорит, что его не существует. Кроме того, это не супер последовательно. До сих пор это происходило либо с первым, либо со вторым символом в строке.

Местные жители

Свойство Exists вызывает сбой скрипта

Список наблюдения

Свойство Exists вызывает сбой скрипта

Журнал ошибок

Свойство Exists вызывает сбой скрипта

Что может быть причиной того, что свойство не существует в некоторых ситуациях кода? Я думал, что Existsвсегда возвращается от findChild специально, чтобы вы могли знать, вернулось ли что-нибудь.

Даже если это undefined, он не должен падать. Какую ошибку вы получаете?

kemicofa ghost 02.04.2019 17:00

Что происходит в getKeyboard()?

Wimanicesir 02.04.2019 17:01

Вероятно, потому что key не определено. А вы пробовали if (key && key.Exists) { }?

kemicofa ghost 02.04.2019 17:01

Мы не сможем вам помочь без журнала ошибок и минимальный воспроизводимый пример

Nino Filiu 02.04.2019 17:07

Попробуйте также реорганизовать эту строку, чтобы использовать запись в квадратных скобках вместо записи через точку: if (key['Exists']) { }. Также, в зависимости от того, что возвращает findChild, вы можете добавить проверку: if (typeof key === 'object' && key['Exists']) { }

Jordan Stubblefield 02.04.2019 17:09

Я добавил журнал ошибок. @Wimanicesir есть несколько разных страниц с клавиатурой, поэтому эта функция будет искать ту, которая активна, и возвращать клавиатуру со страницы.

Cody Harness 02.04.2019 17:14

@kemicofa if (key && key.Exists) не сработал, потому что он все еще того же класса, что и другие, у которых есть Exists. Другие свойства и функции все еще существуют, и я ожидаю, что это тип класса.

Cody Harness 02.04.2019 17:22

Мое предположение (и это предположение, а не реальный ответ) состоит в том, что @kemicofa прав. Я не понимаю вашего ответа на его комментарий. Если keyboard.findChild(...) возвращает "undefined" или "null", тогда ваш код выйдет из строя. Каково значение «ключа» в момент сбоя вашего кода? Это определено? Ненулевой?

Duncan 02.04.2019 18:27

@Duncan Объект определен. Просто отсутствует это свойство. У него все еще есть другие свойства и функции, которые есть у других клавиш с Exist.

Cody Harness 02.04.2019 18:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
53
1

Ответы 1

Как насчет использования свойств Visible или VisibleOnScreen?

Также стоит попробовать записать в KeyWord Test, а потом конвертировать в скрипт.

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

Cody Harness 02.04.2019 17:20

Другие вопросы по теме