Проблема в том, что при вызове window.close() или self.close() окно не закрывается. Теперь кажется, что в Chrome невозможно закрыть с помощью скрипта любое окно, которое не было создано скриптом. Это явно неверно, но независимо от того, что он все еще должен это делать, даже если для подтверждения требуется всплывающее предупреждение. Это не происходит.

. У кого-нибудь есть реальный, функциональный и проверенный метод закрытия окна с использованием чего-то вроде javascript:window.close() или javascript:self.close() у меня есть эта строка кода, которая округляет мои числа до двух десятичных разрядов. Но я получаю такие числа: 10.8 , 2.4 и т. Д. Это не мое представление о двух десятичных знаках, так как я могу улучшить следующее? & # xA ; …

http://underscorejs.org/ # isEqual в заголовке скрипта wi Я буду часто делать трюки даже на тех вкладках, которые обычно не могут обработать метод close. Хотя это не совсем идеально и не обобщается на каждый случай, в моем случае это хорошее решение. // @grant window.close округление — форматирование числа точно с двумя десятичными знаками в JavaScript

У меня есть эта строка кода, которая округляет мои числа до двух десятичных знаков. Но я получаю такие числа: 10,8, 2,4 и т. Д. Это не мое представление о двух десятичных знаках, так как я могу улучшить следующее?

Из последняя рабочая спецификация для window.close():

Переменная close() для объектов Window, если при выполнении всех следующих условий закрыть контекст просмотра Закрытие :

  • Соответствующий контекст просмотра Закрытие , script-closable Глядя на вывод
  • Это выражение даст Закрытие Глядя на вывод
  • Контекст просмотра действующего сценария позволяет перемещаться по контексту просмотра Закрытие Глядя на вывод

, и обрабатывать события на стороне сервера — это называется script-closable если это вспомогательный контекст просмотра, был создан с помощью скрипта (в отличие от действий пользователя) или если это контекст просмотра, история сеанса которого содержит только один Document.

Это означает, за одним небольшим исключением, нельзя разрешать javascript закрывать окно, которое не было открыто этим же javascript.

Chrome допускает это исключение — чего он не делает не распространяется на пользовательские скрипты — однако Firefox нет. . Реализация Firefox выравнивает состояния :

Этот метод можно вызывать только для окон, которые были открыты скриптом с использованием метода window.open.


Если вы попытаетесь использовать window.close из Greasemonkey / Tampermonkey / userscript, вы получите:
Firefox: Сообщение об ошибке «Scripts may not close windows that were not opened by script.»
Chrome: просто молча завершается сбоем.


Долгосрочное решение:

Лучший способ справиться с этим — сделать вместо него расширение для Chrome и / или дополнение для Firefox. интерполяция в вашем шаблоне (для вас будет создан наблюдатель на текущем

Тем не менее, поскольку риски безопасности, связанные с window.close, намного меньше для сценария Greasemonkey / Tampermonkey ; Greasemonkey и Tampermonkey могли бы разумно предоставить эту функциональность в своем API (по сути, упаковывая работу расширения для вас).
Подумайте о том, чтобы сделать запрос на добавление функции.


Хакерские обходные пути:

Chrome Сейчас я строю GUID, используя эти 2 типа для сборки GUID с помощью вызова из 4 частей, как показано ниже: Также смотрите

open(location, '_self').close();

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

Однако , вариант все еще работает в Chrome (v43 & Amp ; v44) плюс Tampermonkey (v3.11 или новее) { *} Я думаю, что это лучшее решение, чем определение . Использование явного @grant запутанный window.close(). EG:

// ==UserScript==
// @name        window.close demo
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant       GM_addStyle
// ==/UserScript==

setTimeout (window.close, 5000);

Спасибо zanetu за обновление. Обратите внимание, что это не будет работать, если открыта только одна вкладка. Закрывает только дополнительные вкладки.

Например, если вы используете что-то вроде защищен от этой атаки. Таким образом, единственный способ javascript — нанести вред настройкам безопасности, по одному браузеру за раз.

Вы можете открыть about:config и установки
allow_scripts_to_close_windowstrue Глядя на вывод

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

В настоящее время нет эквивалентных настроек для Chrome.

У меня есть форма, в которой есть кнопка отправки.

Chrome 36.0.1985.125 СРЕДА, 16 ИЮЛЯ 2014 г. Примечание к выпуску

. По моим наблюдениям, это обновление исправило проблему с использованием window.close() ∴ обновленный однострочный: Хакерские обходные пути В случае, если JavaScript недоступен, я бы использовал href для текущего URL и, возможно, привязку к позиции ссылки. Страница по-прежнему может быть использована для людей без JavaScript, которые не заметят никакой разницы. может не работать в последнем выпуске ,

— это объект, автоматически созданный как специальное свойство проверки

window.open('', '_self', '');
window.close();

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

chrome.windows.remove(integer windowId, function callback)

метод, чтобы удалить его. API-интерфейс расширений Chrome можно найти по адресу chrome.windows Глядя на вывод

… don ‘t … Эмуляция частных интерфейсов столкнулся с этой проблемой, и мне пришлось обновить свой код, чтобы он работал для этого обновления Chrome. Кстати, MarkView — это инструмент для чтения и записи Awesome Markdown Files, он предоставляет такие функции, как структура содержимого, сортируемые таблицы и подсветка синтаксиса блока кода с номером строки.

Я также создал не обязательно связывать с , любые комментарии приветствуются.

В tampermonkey теперь вы можете использовать

// @grant        window.close

И затем просто просто позвоните

window.close();

Я использую метод, опубликованный Броком Адамсом, и он даже работает в Firefox, если он инициирован пользователем.

open(location, '_self').close();

, а «Плохие новости» — это { пользователь инициировал и он по-прежнему работает нормально, используя Chrome 35-40, Internet Explorer 11, Safari 7-8 и ALSO Firefox 29-35. Я тестировал, используя версию 8.1 Windows и Mac OS X 10.6, 10.9 & Amp ; 10.10, если это не так.


Полный код:

HTML:

<input type="button" name="Quit" id="Quit" value="Quit" onclick="return quitBox('quit');" />

JavaScript:

function quitBox(cmd)
{   
    if (cmd=='quit')
    {
        open(location, '_self').close();
    }   
    return false;   
}

Попробуйте эту тестовую страницу: (сейчас тестируется в Chrome 40 и Firefox 35)

и т.п. не работает, так как он переопределяется моим внешним

Многие люди все еще пытаются найти способ закрыть браузер Chrome с помощью javascript. { *}. Для других документов, например, во встроенном iframe, к которому у вас есть доступ, передайте документ в качестве параметра: Следующий метод работает только при использовании Chrome в качестве средства запуска приложения — например, киоска!

Я проверил следующее:

конструктор Close Kiosk

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

window.location.href = '/closekiosk';

Я надеюсь, что это кому-нибудь поможет, так как это единственное рабочее решение, которое я нашел.

Примечание. Кажется, расширение работает в фоновом режиме и добавляет значок Chrome в трее. У него отмечена следующая опция: «Дать Chrome работать в фоновом режиме» (или аналогичный текст). Возможно, вам придется поиграть с ним, пока он не сработает для вас. Я снял флажок, и теперь он работает просто отлично!

Несмотря на то, что вы думаете, что это «явно ложно», то, что вы говорите «кажется убеждением», на самом деле правильно. Документация Mozilla для window.close говорит, что

Этот метод можно вызывать только для окон, которые были открыты скриптом с использованием метода window.open. Если окно не было открыто скриптом, в консоли JavaScript появляется следующая ошибка: Скрипты могут не закрывать окна, которые не были открыты скриптом

Важным аспектом является то, что

Я нашел новый способ, который работает для меня безупречно

var win = window.open("about:blank", "_self");
win.close();

— или— —

window.open('location', '_self', '');
window.close();

Я также покажу вам, как очистить страницу после того, как документ будет готов, чтобы изначально отображалось только одно изображение. delete

Это может быть устаревшим, но давайте ответим на него.

R equireJS top.close () , чтобы закрыть вкладку. window.close () Разнообразие «работает во всех браузерах» — работает во всех браузерах!

В моем случае страница должна была закрыться, но, возможно, была открыта по ссылке, и, таким образом, window.close потерпит неудачу.

я выбрал решение выпустить window.close Использование: window.setTimeout который перенаправляет на другую страницу.

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

window.close();
window.setTimeout(function(){location.href = '/some-page.php';},1000);

Только если вы откроете новое окно с помощью window.open (), новое окно сможет закрыться с использованием кода, как я Я уже упоминал выше. Это прекрасно работает для меня :) Примечание: Никогда не используйте href, чтобы открыть страницу в новой вкладке. Window.close () не работает с «href». Вместо этого используйте window.open ().

Попробуйте что-то вроде этого onclick = «return self.close ()»