Как закрыть вкладку firefox из скрипта greasemonkey?

У меня есть пользовательский скрипт greasemonkey с этой единственной строчкой кода ...

window.close();

но firefox не позволяет пользовательскому сценарию закрывать окно (о чем сообщает сообщение об ошибке в консоли ошибок)

Есть ли способ решить эту проблему?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
15
0
13 985
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Для этого вам необходимо изменить настройки конфигурации Firefox (about: config).

Шаги:

  1. Перейдите в адресную строку и введите about: config
  2. Перейти к параметру dom.allow_scripts_to_close_windows
  3. Установите его значение как правда

Теперь ваш скрипт может закрыть вкладку с помощью window.close ().

например.

function closeTab(){
    window.open('', '_self', '');
    window.close();
} 

Но разве это не позволит сценариям все закрывать окна? Есть ли способ, позволяющий закрывать окна только скриптам greasemonkey?

Autodidact 01.12.2008 12:36

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

M.N 01.12.2008 14:46

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

К настоящему времени некоторые из -монки позволяют использовать параметр @grant для официальной разблокировки команд, таких как window.close (), без перехода к about: config. Например, в Tampermonkey:

// @grant window.close
// @grant window.focus

(Последний даровать позволяет вам перефокусировать браузер на вашем окне.) Это устранило бы ошибку.

Обновлено: Как правильно упоминает @baptx в комментариях, параметры безопасности браузера должны быть установлены так, чтобы скрипты также могли закрывать окна.

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

DDRRSS 25.01.2019 10:49

Хорошо работает в Violentmonkey. Спасибо

mt025 04.09.2019 17:54

Не работал с Greasemonkey, мне пришлось вместо этого установить dom.allow_scripts_to_close_windows на true в about:config.

baptx 15.06.2020 21:56

@baptx Да, конечно. Я обновил сообщение, чтобы упомянуть настройки браузера; благодаря.

DDRRSS 16.06.2020 22:19

@DDRRSS не то, чтобы с этой настройкой не было необходимости использовать @grant window.close или @grant window.focus, по крайней мере с Greasemonkey.

baptx 24.06.2020 15:48

Начиная с Greasemonkey 4.10.0, @grant window.close достаточно для обеспечения возможности закрытия окна, даже если значение DOM dom.allow_scripts_to_close_windows по-прежнему установлено на false.

March Ho 21.10.2020 20:01

@MarchHo Я не могу это подтвердить. У меня это не работает. Вкладка не закрывается.

ygoe 22.10.2020 14:35

Другие вопросы по теме