我試圖在System.Windows.Forms.WebBrowser
控件中顯示帶有嵌入式JavaScript代碼的HTML頁面。預計JavaScript代碼將通過window.external
對象與嵌入環境進行交互。在調用方法window.external
之前,JavaScript應該檢查方法的存在。如果它不在那裏,代碼應該調用一個通用的回退方法。在檢查typeof時調用window.external的無參數方法
// 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」' – 2010-05-09 14:50:48
任何回答這個問題的人都需要**在IE瀏覽器上用'window.external'嘗試他們的解決方案** - 測試Javascript上對象存在的常規方法不適用於'window.external'。 – funkybro 2013-08-13 07:17:40