Я пытаюсь отобразить HTML-страницу со встроенным кодом JavaScript внутри элемента управления System.Windows.Forms.WebBrowser. Ожидается, что код JavaScript будет взаимодействовать со средой внедрения через объект window.external. Прежде чем вызывать метод на window.external, JavaScript должен проверить наличие метода. Если его нет, код должен вызывать общий метод резервного копирования.
// basic idea
if (typeof(window.external.MyMethod) != 'undefined') {
window.external.MyMethod(args);
} else {
window.external.Generic("MyMethod", args);
}
Однако проверка метода без аргументов с помощью typeof, похоже, уже вызывает этот метод. То есть, если MyMethod принимает любое положительное число аргументов, код выше будет работать отлично; но если MyMethod - метод без аргументов, то выражение typeof(window.external.MyMethod) не будет проверять его тип, но также вызывает его.
Есть ли какая-нибудь работа вокруг этого поведения? Можно ли каким-то образом избежать выражения window.external.MyMethod, чтобы предотвратить вызов метода?