У меня есть пользовательский скрипт greasemonkey с этой единственной строчкой кода ...
window.close();
но firefox не позволяет пользовательскому сценарию закрывать окно (о чем сообщает сообщение об ошибке в консоли ошибок)
Есть ли способ решить эту проблему?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для этого вам необходимо изменить настройки конфигурации Firefox (about: config).
Теперь ваш скрипт может закрыть вкладку с помощью window.close ().
например.
function closeTab(){
window.open('', '_self', '');
window.close();
}
Поскольку это параметр конфигурации Firefox, я не думаю, что есть способ добавить доверенные источники сценариев или что-то в этом роде. Если вы разрешите сценарию закрывать вкладку, любой сценарий может закрыть вкладку.
Поскольку Firefox обрабатывает код Greasemonkey с теми же привилегиями, что и код сценария на внешних веб-сайтах, невозможно разрешить только коду Greasemonkey закрывать окна, но не обычным сценариям.
К настоящему времени некоторые из -монки позволяют использовать параметр @grant для официальной разблокировки команд, таких как window.close (), без перехода к about: config. Например, в Tampermonkey:
// @grant window.close
// @grant window.focus
(Последний даровать позволяет вам перефокусировать браузер на вашем окне.) Это устранило бы ошибку.
Обновлено: Как правильно упоминает @baptx в комментариях, параметры безопасности браузера должны быть установлены так, чтобы скрипты также могли закрывать окна.
Я добавил прямую ссылку на документацию. В противном случае ответ должен быть прекрасным, поскольку люди все еще находят этот вопрос в наши дни, поэтому должен быть современный ответ на него. Не было бы ошибок, если бы использовались упомянутые мною параметры даровать.
Хорошо работает в Violentmonkey. Спасибо
Не работал с Greasemonkey, мне пришлось вместо этого установить dom.allow_scripts_to_close_windows на true в about:config.
@baptx Да, конечно. Я обновил сообщение, чтобы упомянуть настройки браузера; благодаря.
@DDRRSS не то, чтобы с этой настройкой не было необходимости использовать @grant window.close или @grant window.focus, по крайней мере с Greasemonkey.
Начиная с Greasemonkey 4.10.0, @grant window.close достаточно для обеспечения возможности закрытия окна, даже если значение DOM dom.allow_scripts_to_close_windows по-прежнему установлено на false.
@MarchHo Я не могу это подтвердить. У меня это не работает. Вкладка не закрывается.
Но разве это не позволит сценариям все закрывать окна? Есть ли способ, позволяющий закрывать окна только скриптам greasemonkey?