Я хочу создать на веб-странице ссылку, которая закрывала бы активную в настоящее время вкладку в браузере, не закрывая другие вкладки в браузере.
Когда пользователь нажимает на ссылку закрытия, должно появиться предупреждающее сообщение с просьбой подтвердить его двумя кнопками «ДА» и «НЕТ». Если пользователь нажимает «ДА», закройте эту страницу и, если «НЕТ», ничего не делайте.
Как это можно сделать? Какие-либо предложения?
javascript
html
hyperlink
Навид
источник
источник
Ответы:
Вам понадобится Javascript для этого. Используйте
window.close()
:Примечание: текущая вкладка подразумевается. Это эквивалентно:
или вы можете указать другое окно.
Так:
с HTML:
или:
Вы
return false
здесь, чтобы предотвратить поведение по умолчанию для события. В противном случае браузер будет пытаться перейти на этот URL-адрес (что, очевидно, не так).Теперь параметры в
window.confirm()
диалоговом окне будут ОК и Отмена (не Да и Нет). Если вы действительно хотите Да и Нет, вам нужно создать модальное диалоговое окно Javascript.Примечание: есть определенные для браузера различия с вышеупомянутым. Если вы открыли окно с помощью Javascript (через
window.open()
), то вы можете закрыть окно с помощью Javascript. Firefox запрещает вам закрывать другие окна. Я полагаю, что IE запросит у пользователя подтверждение. Другие браузеры могут отличаться.источник
about:config
dom.allow_scripts_to_close_windows = true
может быть решение в Firefox (может быть большой риск безопасности!)<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
см. Также эту статьюПопробуй это
источник
Этот метод работает в Chrome и IE:
источник
open(location, '_self').close();
Насколько я могу сказать, это больше невозможно в Chrome или FireFox. Это все еще возможно в IE (по крайней мере, до Edge).
источник
<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
см. Также эту статьюЭто возможно. Я искал всю сеть для этого, но однажды, когда я взял один из опросов Microsoft, я, наконец, получил ответ.
попробуй это:
это закроет текущую вкладку для вас.
источник
Успешно протестировано в FF 18 и Chrome 24:
Вставьте в голову:
HTML:
Кредиты идут к Маркосу Дж. Дрейку .
источник
Попробуйте это тоже. Работаю для меня во всех трех основных браузерах.
источник
В Chrome 41 у меня работает следующее:
Я попробовал несколько идей для FF, включая открытие реальной веб-страницы, но, похоже, ничего не работает. Насколько я понимаю, любой браузер закроет вкладку или окно с помощью xxx.close (), если он действительно был открыт JS, но FF, по крайней мере, нельзя заставить закрыть вкладку, открыв новый контент внутри этой вкладки.
Это имеет смысл, когда вы думаете об этом - пользователь может не захотеть, чтобы JS закрывал вкладку или окно с полезной историей.
источник
Извините за некропост, но недавно я реализовал локально размещенный сайт, который нуждался в возможности закрыть текущую вкладку браузера и нашел некоторые интересные обходные пути, которые не были хорошо документированы в любом месте, где я мог найти, поэтому взял на себя это.
Примечание. Эти обходные пути были сделаны с учетом локально размещенного сайта, и (за исключением Edge) требуют, чтобы браузер был специально настроен, поэтому он не будет идеальным для общедоступных сайтов.
Контекст: в прошлом скрипт jQuery
window.close()
мог без проблем закрывать текущую вкладку в большинстве браузеров. Однако современные браузеры больше не поддерживают этот сценарий, возможно, по соображениям безопасности.Гугл Хром:
Chrome не позволяет запускать скрипт window.close (), и ничего не происходит, если вы попытаетесь его использовать. Однако с помощью плагина Chrome TamperMonkey мы можем использовать метод window.close (), если вы
// @grant window.close
включите в заголовок UserScript TamperMonkey.Например, мой скрипт (который запускается при нажатии кнопки с id = 'close_page' и нажатии 'yes' во всплывающем окне браузера) выглядит следующим образом:
Замечания: Это решение может закрыть вкладку, только если она НЕ является последней открытой вкладкой. Так эффективно, он не может закрыть вкладку, если это приведет к закрытию окна, будучи последней открытой вкладкой.
Fire Fox:
Firefox имеет расширенные настройки, которые вы можете разрешить сценариям закрывать окна, эффективно включив
window.close()
метод. Чтобы включить этот параметр, перейдите в about: config, затем найдите и найдите параметр dom.allow_scripts_to_close_windows и переключите его с false на true.Это позволяет вам использовать
window.close()
метод непосредственно в вашем файле jQuery, как и любой другой скрипт.Например, этот скрипт прекрасно работает с настройкой true:
Это работает намного лучше, чем обходной путь Chrome, поскольку позволяет пользователю закрывать текущую вкладку, даже если она открыта только для вкладки, и не требует стороннего плагина. Один недостаток, однако, заключается в том, что он также позволяет запускать этот сценарий на разных веб-сайтах (не только на том, на котором вы собираетесь его использовать), что потенциально может представлять угрозу безопасности, хотя я не могу представить, что закрытие текущей вкладки является особенно опасным.
Край:
К сожалению, Edge показал лучший результат из всех трех браузеров, которые я пробовал, и работал с
window.close()
методом без какой-либо настройки. Когдаwindow.close()
скрипт запускается, дополнительное всплывающее окно предупреждает вас о том, что страница пытается закрыть текущую вкладку, и спрашивает, хотите ли вы продолжить.Заключительное примечание: . Решения для Chrome и Firefox - это обходные пути, которые браузеры намеренно отключили, возможно, из соображений безопасности. Они также требуют, чтобы пользователь настраивал свои браузеры так, чтобы они были совместимы заранее, поэтому, скорее всего, они не будут жизнеспособными для сайтов, предназначенных для общего пользования, но идеально подходят для локально размещенных решений, таких как мой.
Надеюсь, это помогло! :)
источник
Что касается людей, которые все еще посещают эту страницу, вам разрешено только закрывать вкладку, которая открывается скриптом ИЛИ, используя тег привязки HTML с target _blank. Оба они могут быть закрыты с помощью
источник
это сделало работу для меня
источник
немного поздно, но это то, что я узнал ...
window.close()
будет работать (IE является исключением), если окно, которое вы пытаетесьclose()
открыть, было открыто скриптом с помощью метода window.open ().! (см. комментарий @killstreet ниже о теге привязки с целью _blank)
TLDR : chrome & firefox позволяют закрывать их.
вы получите ошибку консоли: Скрипты могут не закрывать окна, которые не были открыты скриптом. как ошибка и больше ничего.
Вы можете добавить уникальный параметр в URL , чтобы знать , если страница была открыта из сценария (например , время) - но его просто хак , а не родная функциональность и неудача в некоторых случаях.
Я не мог найти какой-либо способ узнать, была ли страница открыта из open () или нет, и закрыть не будет выбрасывать и ошибки. это НЕ будет печатать «тест»:
Вы можете прочитать в MDN больше о функции close ()
источник
Вот как бы вы создали такую ссылку:
<a href="javascript:if(confirm('Close window?'))window.close()">close</a>
источник
Это один из способов решения этой проблемы, объявить функцию JavaScript, как это
Добавьте следующую строку в HTML, чтобы вызвать функцию, используя
<button>
источник