Я пытаюсь отобразить 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
, чтобы предотвратить вызов метода?