Подтвердить что ты не робот

Как программно определить, как браузер обрабатывает window.close()?

Различные веб-браузеры обрабатывают функцию window.close() по-разному. IE запрашивает подтверждение пользователя, в то время как Firefox и Safari просто не соблюдают его, если только окно не было открыто с помощью Javascript и не отобразило сообщение, говорящее так же, как на консоли.

Стороннее веб-приложение, используемое внутри нашей организации, которое я поддерживаю, отображает кнопку "закрыть" в конце серии страниц, подобранных мастером. Это хорошо работает для IE, что и используется большинством наших пользователей. Однако это, очевидно, не выполняется в FF. Я бы предпочел оставить кнопку и использовать Javascript для изящного ухудшения пользовательского интерфейса, не отображая эту кнопку в любом браузере, который не будет выполнять window.close().

Как правило, я пытаюсь проверить возможности браузера, а не полагаться на жестко закодированную политику, основанную на обнаружении браузера, когда это возможно. Есть ли способ программно проверить поддержку window.close(), чтобы я мог определить, должна ли кнопка отображаться в первую очередь?

4b9b3361

Ответ 1

Попробуйте следующее:

Демо: http://jsfiddle.net/ThinkingStiff/mnv87/

Script:

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, если всплывающие окна заблокированы.

Ответ 2

Почему бы не проверить совместимость, а затем добавить в случае совместимости? Использование 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 совместим с кросс-браузером, он должен

Ответ 3

Очень просто. Ваш script должен попробовать (или try) до window.close, и если он все еще жив после этой попытки - покажите это сообщение и, необязательно, удалите/замените содержимое страницы или используйте location.reload, чтобы не предоставлять вашим пользователям любая причина оставаться на странице больше.

p.s: имейте в виду, что закрытие окон из JavaScript очень невежливо. Поэтому у вас есть несколько веских причин для этого;)