Estoy tratando de mostrar una página HTML con código JavaScript incorporado dentro de un control System.Windows.Forms.WebBrowser
. Se espera que el código de JavaScript interactúe con el entorno de incrustación a través del objeto window.external
. Antes de invocar un método en window.external
, se supone que JavaScript verifica la existencia del método. Si no está allí, el código debe invocar un método de respaldo genérico.Método sin argumentos en window.external se invoca al verificar con typeof
// basic idea
if (typeof(window.external.MyMethod) != 'undefined') {
window.external.MyMethod(args);
} else {
window.external.Generic("MyMethod", args);
}
Sin embargo, la comprobación de un método sin argumentos con typeof
parece invocar el método ya. Es decir, si MyMethod
acepta cualquier número positivo de argumentos, el código anterior funcionará perfectamente; pero, si MyMethod
es un método sin argumento, entonces la expresión typeof(window.external.MyMethod)
no buscará su tipo, sino que lo invocará también.
¿Hay alguna solución a este problema? ¿Puedo escapar de alguna manera a la expresión window.external.MyMethod
para evitar que ocurra la llamada al método?
¿Ha intentado utilizar typeof como operador en lugar de como función? 'typeof window.external.MyMethod! ==" undefined "' –
Cualquiera que responda esta pregunta necesita ** probar su solución con 'window.external' en IE ** - formas regulares de probar la existencia de un objeto en Javascript do no funciona para 'window.external'. – funkybro