2012-02-27 30 views
2

IE7のWindows Embedded 7のロックダウンバージョンを実行しているオンボードコンピュータなど、さまざまなデバイスで使用されているモバイルサイトがあります。説明できない何らかの理由で、window.confirm()が壊れていますが、window.confirm()がサポートされているかどうかを確認する方法は?

確認ハンドラを配線する前に次のチェックを追加しましたが、リンクをクリックするだけで何もしません。

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

クリックハンドラを削除すると、リンクは正常に機能します。 confirm()のサポートをテストするには良い方法はありますか?

+0

カスタム実装を使用してみませんか?もちろん、ブラウザを妨害することなく選択を返すことはできませんでしたが、コールバックを使用して簡単に行うことができます。 – ThiefMaster

+0

@ThiefMasterあなたはモーダルダイアログを提案していますか? – jrummell

+0

はい、正確に[愚かな最小の長さ] – ThiefMaster

答えて

1

方法について:

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

もう一つのオプションはwindow.hasOwnProperty('confirm')だろう。

1

あなたはwindow.confirmは、以下の提案の方法は、私がテストしたすべてのデスクトップブラウザで働いている間あなたは

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

機能であるかどうかを確認するためにのtypeof を使用することができ、それらはすべてデバイス上で真であると評価され、ダイアログを表示したり、アンカーのhrefのリンクに移動したりしませんでした。

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

私のソリューションは、@ ThiefMasterの提案に基づいて、代わりにjQuery UI Dialogを使用していた(IE 7では、typeof somefunction'object'代わりの'function'です)。

+2

window.hasOwnProperty( 'confirm')はfalseを返します。 – kennebec

+0

@kennebecはい、それは本当です、なぜ私は分かりません。 –

+1

で私の答えを修正しました。 'typeof window.confirm'はIE 7と8では "object"ですが、9では "function"と思われます。 – jrummell

1
if(typeof confirm=='function')// window.confirm is defined and a function 
関連する問題