13

Web ブラウザーが異なれば、window.close() 関数の処理も異なります。IE はユーザーに確認を求めますが、Firefox と Safari は、ウィンドウが最初に Javascript で開かれ、コンソールに同様のメッセージが表示されない限り、それを尊重しません。

私がサポートしている組織内で使用されているサードパーティの Web アプリケーションは、ウィザードのような一連のページの最後に「閉じる」ボタンを表示します。これは、大多数のユーザーが使用する IE でうまく機能します。しかし、これはFFでは明らかに失敗します。window.close() を実行しないブラウザではボタンを表示しないようにして、ボタンをそのままにして Javascript を使用して UI を適切に劣化させたいと思います。

経験則として、可能な限り、ブラウザーの検出に基づいてハードコーディングされたポリシーに依存するのではなく、ブラウザーの機能をチェックするようにしています。window.close() のサポートをプログラムでチェックして、最初にボタンを表示する必要があるかどうかを判断する方法はありますか?

4

3 に答える 3

2

これを試して:

デモ: http://jsfiddle.net/ThinkingStiff/mnv87/

脚本:

function hasClose() {

    var close = window.open( '', '', 'height=100,width=100,left=3500', false );
    close.close();
    return close.closed;

};

if( hasClose() ) {
    //show button
} else {
    //hide button
};

ポップアップがブロックされている場合にも注意hasClose()が返されます。false

于 2011-10-29T01:15:58.907 に答える
1

互換性を確認してから、互換性がある場合は追加してみませんか? jQuery の使用:

<script type="text/javascript" src="latest_jquery_file.js"></script>
<script type="text/javascript">
  $(document).on("ready", (function(e)
  {
   $("body").append('<p><a href="#" id="windowcloser">Close The Window!!</a></p>');
      $('#windowcloser').click(function(){
         window.close();
      });
  })
  );
</script>

jQuery はクロス ブラウザ互換であるため、

于 2012-04-22T02:25:49.463 に答える
0

Very simple. Your script should try (or try) to window.close, and if its still alive after that try - show the message, and, optionally, erase/replace page content, or use location.reload to not give your users any reason to stay at the page anymore.

p.s.: keep in mind, closing windows from JavaScript is very impolite. So you better have some good reasons for doing it ;)

于 2011-10-25T17:48:00.923 に答える