我按照本指南建立了一個用於通信的新JS。 app
個人代碼是 函數
function getID( swfID ){ if(navigator.appName.indexOf("Microsoft") != -1){ me = window[swfID]; }else{ me = document[swfID]; } } function js_to_as( str ){ me.onChange(str); }
可是,有時個人onChange
沒法加載。 螢火蟲錯誤 spa
me.onChange不是一個函數 code
我想優雅地降級,由於這不是我程序中最重要的功能。 typeof
給出相同的錯誤。 事件
關於如何確保它存在而後僅執行onChange
任何建議? get
(如下任何一種方法都不能嘗試抓到一件做品) io
function js_to_as( str ){ if (me && me.onChange) me.onChange(str); }
嘗試這樣的事情: function
if (typeof me.onChange !== "undefined") { // safe to use the function }
或更好(根據UpTheCreek的評論) cli
if (typeof me.onChange === "function") { // safe to use the function }
無條件 bug
me.onChange=function(){}; function getID( swfID ){ if(navigator.appName.indexOf("Microsoft") != -1){ me = window[swfID]; }else{ me = document[swfID]; } } function js_to_as( str ){ me.onChange(str); }
我會懷疑me
沒有正確分配onload。
將get_ID調用移到onclick事件中應該注意這一點。
顯然,您能夠如前所述進一步陷井:
function js_to_as( str) { var me = get_ID('jsExample'); if (me && me.onChange) { me.onChange(str); } }
我將更進一步以確保該屬性確實是一個函數
function js_to_as( str ){ if (me && me.onChange && typeof me.onChange === 'function') { me.onChange(str); } }