2012-02-27 96 views
2

我有一個移動網站,由各種設備使用,包括一些運行帶有IE 7的Windows Embedded 7鎖定版本的板載計算機。由於某些原因,我無法解釋,window.confirm()已損壞,但所有其他JavaScript似乎都有效。如何確定是否支持window.confirm()?

我甚至在接線確認處理程序之前添加了以下檢查,但單擊該鏈接根本不會執行任何操作。

 if (window.confirm) 
     { 
      $(".logoff").click(function() 
      { 
       return confirm("Are you sure you want to log off?"); 
      }); 
     } 

如果我刪除點擊處理程序,鏈接功能正常。有沒有更好的方法來測試confirm()的支持?

+0

爲什麼不使用自定義實現?當然,如果不以一種惡意的方式阻止瀏覽器,它就無法返回選擇,但您可以輕鬆地使用回調來完成。 – ThiefMaster 2012-02-27 17:21:21

+0

@ThiefMaster你在暗示一個模態對話框嗎? – jrummell 2012-02-27 18:02:31

+0

是的,正好[愚蠢的最小長度] – ThiefMaster 2012-02-27 18:06:12

回答

0

雖然下面的建議方法,嘗試了所有桌面瀏覽器的工作,他們都在設備上評估爲true,但仍未顯示對話框或導航到錨點href中的鏈接。

if (typeof confirm == 'object') 
if ('confirm' in window && typeof window.confirm === 'object') 
if (window.confirm) 

(在IE 7,typeof somefunction'object'代替'function'

我的解決辦法是使用一個jQuery UI Dialog代替,基於@ ThiefMaster的建議。

1

如何:

if ('confirm' in window) { 
    $(".logoff").click(function() { 
     return window.confirm("Are you sure you want to log off?"); 
    }); 
} 

另一個選項是window.hasOwnProperty('confirm')

1

你可以使用的typeof檢查,如果window.confirm是一個功能

1

你可以做

if ('confirm' in window && typeof window.confirm === 'function') { 
    $(".logoff").click(function() { 
     return window.confirm("Are you sure you want to log off?"); 
    }); 
} 
+2

window.hasOwnProperty('confirm')返回false。 – kennebec 2012-02-27 17:17:21

+0

@kennebec是的,這是真的,我不知道爲什麼。我修改了我在 – 2012-02-27 17:21:49

+1

中使用的答案IE 7和8中似乎'typeof window.confirm'是「object」,但是9中的「function」。 – jrummell 2012-02-27 18:01:37

1
if(typeof confirm=='function')// window.confirm is defined and a function