2012-03-25 46 views
1

如果我運行IE8或更低的代碼,我得到這個錯誤:Object doesn't support this property or method對象不支持此屬性或方法。爲什麼?

var hasFlash = ((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false)); 
+0

你試圖分解它,準確地看到問題出在哪裏? – 2012-03-25 00:12:07

+0

調試器不會寫任何其他內容,只是出現此錯誤 – 2012-03-25 00:13:55

+1

嘗試插入一些換行符以查找導致故障的部分... – Niko 2012-03-25 00:15:06

回答

2

也許new ActiveXObject部分失敗,因爲ActiveXObject是(在你目前的設置)沒有任何的new符可以應用到 - 或「ShockwaveFlash.ShockwaveFlash」不是有效的輸入,因此引發異常。

但是,您可以輕鬆地重寫代碼來解決這個問題:

var hasFlash = (function() { 
    if (typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") { 
     return true; 
    } else if (typeof window.ActiveXObject != "undefined") { 
     try { 
      new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); 
      return true; 
     } catch (e) { } 
    } 

    return false; 
})(); 
+0

謝謝Niko,它的工作原理 – 2012-03-25 00:51:38

相關問題