【发布时间】:2011-02-17 09:09:24
【问题描述】:
我正在尝试在 System.Windows.Forms.WebBrowser 控件中显示带有嵌入 JavaScript 代码的 HTML 页面。 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 以防止发生方法调用吗?
【问题讨论】:
-
您是否尝试过使用 typeof 作为运算符而不是函数?
typeof window.external.MyMethod !== "undefined" -
回答此问题的任何人都需要在 IE 上使用
window.external尝试他们的解决方案——在 Javascript 上测试对象是否存在的常规方法不适用于window.external。
标签: c# javascript internet-explorer webbrowser-control