Как закрыть текущую вкладку в окне браузера?

Вот код JS Bin с помощью jQuery. Протестировано во всех браузерах. Здесь мы должны щелкнуть строки, чтобы удалить их с прекрасным эффектом. Надеюсь, это поможет.

391
задан Fabian N. 19 July 2018 в 08:39
поделиться

3 ответа

Вам понадобится JavaScript для этого. Использование Window.Close () :

close();

Примечание: подразумевается текущая вкладка. Это эквивалентно:

window.close();

или вы можете указать другое окно.

Так что:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

с HTML:

<a href="javascript:close_window();">close</a>

или:

<a href="#" onclick="close_window();return false;">close</a>

Вы возвращают ложь здесь, чтобы предотвратить поведение по умолчанию для события. В противном случае браузер попытается перейти к этому URL (что это явно не).

Теперь параметры в окно. В диалоговом окне () будет в порядке и отменить (не да и нет). Если вы Действительно хотите Да, и нет, вам нужно создать какой-то диалоговое окно модального JavaScript.

Примечание: Есть различия в браузере с вышеуказанным. Если вы открыли окно с помощью JavaScript (через окно .Open () ), то вам разрешено закрыть окно с помощью JavaScript. Firefox отказывается от вас от закрытия других окон. Я верю, т.е. попросит пользователя подтвердить. Другие браузеры могут варьироваться.

467
ответ дан 22 November 2019 в 23:32
поделиться

Извините за некрорегистрацию этого, но я недавно реализовал локально размещенный сайт, который нуждался в способности закрыть текущую вкладку браузера и нашел некоторые интересные обходные решения, которые не хорошо документируются нигде, я мог найти, поэтому принял на мне, чтобы сделать так.

Примечание: Эти обходные решения были сделаны с локально размещенным сайтом в памяти, и (за исключением Края) требуют, чтобы браузер был конкретно настроен, так не было бы идеально для публично размещенных сайтов.

Контекст: В прошлом сценарий window.close() jQuery смог закрыть текущую вкладку без проблемы на большинстве браузеров. Однако современные браузеры больше не поддерживают этот сценарий, потенциально из соображений безопасности.

Google Chrome:

Chrome не позволяет window.close () сценарий быть, чтобы быть выполненным, и ничего не происходит, при попытке использовать его. При помощи плагина Chrome TamperMonkey однако мы можем использовать window.close () метод , если Вы включаете // @grant window.close в заголовок UserScript TamperMonkey.

, Например, мой сценарий (который инициирован, когда кнопка с идентификатором = 'close_page' нажата и если 'да' нажимается на всплывающем окне браузера) похож:

// ==UserScript==
// @name         Close Tab Script
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Closes current tab when triggered
// @author       Mackey Johnstone
// @match        http://localhost/index.php
// @grant        window.close
// @require      http://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==

(function() {
    'use strict';
    $("#close_page").click(function() {
        var confirm_result = confirm("Are you sure you want to quit?");
        if (confirm_result == true) {
            window.close();
        }
    });
})();

Примечание: Это решение может только закрыть вкладку, если это не последняя открытая вкладка как бы то ни было. Так эффективно это не может закрыть вкладку, если это вызвало бы окно к завершениям, будучи последней открытой вкладкой.

Firefox:

Firefox имеет расширенную настройку, которую можно включить, чтобы позволить сценариям закрывать окна, эффективно включив window.close() метод. Для включения этой установки переходят в [1 110] about:config затем поиск и находят предпочтение dom.allow_scripts_to_close_windows и переключают его от лжи до истинного.

Это позволяет Вам использовать window.close() метод непосредственно в Вашем файле jQuery, поскольку Вы были бы любой другой сценарий.

, Например, этот сценарий работает отлично с предпочтительным набором к истинному:

<script>
  $("#close_page").click(function() {
    var confirm_result = confirm("Are you sure you want to quit?");
    if (confirm_result == true) {
      window.close();
    }
  });
</script>

Это работает намного лучше, чем обходное решение Chrome, поскольку оно позволяет пользователю закрывать текущую вкладку, даже если это - единственная открытая вкладка, и не требует стороннего плагина. Одна оборотная сторона однако - то, что это также позволяет этому сценарию быть выполненным различными веб-сайтами (не только тот, который Вы предназначаете это для использования на), так могла потенциально быть опасность безопасности, хотя я не могу предположить закрывать текущую вкладку, являющуюся особенно опасным.

Край:

Неутешительно Край на самом деле выполнил лучшее из всех 3 браузеров, которые я попробовал и работал с window.close() метод, не требуя никакой конфигурации. Когда window.close() скрипт запущен, дополнительное всплывающее окно предупреждает Вас, что страница пытается закрыть текущую вкладку и спрашивает, хотите ли Вы продолжить.

enter image description here

Заключительное Примечание: решениями и для Chrome и для Firefox являются обходные решения для чего-то, что браузеры намеренно отключили, потенциально из соображений безопасности. Они также, оба требуют, чтобы пользователь настроил их браузеры, чтобы быть совместимым перед рукой, так вероятно, не было бы жизнеспособно для сайтов, предназначенных для общедоступного использования, но идеальны для локально размещенных решений как мои.

Hope это помогло! :)

1
ответ дан 22 November 2019 в 23:32
поделиться

Вот как бы вы создали такую ​​ссылку:

ответ дан 22 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: