Вопрос: Отключить печать в Firefox.


Я использую Firefox 23.0.1. Я хочу полностью отключить печать из Firefox, возможно ли это?

я использовал о: конфигурации для установки следующих свойств:

  • print.always_print_silent = true
  • print.show_print_progress = false

Он получает меня на полпути, Firefox печатает тихо и не показывает никаких признаков печати. Однако задание по-прежнему отправляется на принтер по умолчанию.

Затем я попытался установить print_printer в пустую строку, так как это, по-видимому, является принтером по умолчанию, но это порождает отправку задания на этот принтер.

Есть ли способ полностью отключить печать для Firefox, предпочтительно с помощью настроек в о: конфигурации?

Я хочу сделать это, так как у меня есть автоматические тесты на полунагрузку (с использованием Selenium вместе с JMeter). В тестируемом приложении вставлен pdf-файл, в котором javascript отправляет PDF на принтер по умолчанию. Если печать не может быть отключена, на принтер будет отправлено много заданий на мусор.


2
2017-09-11 10:00


Источник


Ну, разве ты не можешь просто напечатать? Или изменить принтер по умолчанию? Я думаю, что это может быть полезно, если мы знаем, почему вы хотите этого поведения? - Dave
пожалуйста всегда включая вашу ОС. Решения очень часто зависят от используемой операционной системы. Используете ли вы Windows, Linux, Unix, OSX, BSD? Какая версия? - terdon
@terdon Извините. Первый пост в СУ. - Magnilex
@DaveRook Я обновлю свой вопрос, почему я хочу этого поведения. - Magnilex
@DaveRook Изменение принтера по умолчанию будет работать, но к чему? Я даже не хочу загромождать файловую систему. - Magnilex


Ответы:


Вы можете отключить функцию печати JavaScript для предотвращения инициированных JS операций печати.

Существует два способа отключения функции JS:

  • Установите политики для запрета функции
  • Замените его фиктивной функцией

  • Другой вариант - установить фиктивный системный принтер


Вариант 1: Политики безопасности

Вы можете установить Конфигурируемые политики безопасности добавлением следующая строка к user.js файл (примечание: Firefox должен быть полностью закрыт до того, как этот файл может быть изменен):

user_pref("capability.policy.default.Window.print", "noAccess");

Кроме того, вы можете перейти к about:config и добавьте новый строковый ключ с тем же именем и значениями. Обратите внимание, что вы не сможете увидеть или удалить этот ключ из пользовательского интерфейса конфигурации.

Если вы хотите заблокировать это только на определенных сайтах, следует работать (заменить примерные домены):

user_pref("capability.policy.blockPrinting.Window.print", "noAccess");
user_pref("capability.policy.blockPrinting.sites", "http://example.com http://something.example.com");

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


Вариант 2: Манекен-функция

Вы можете заменить функцию печати фиктивной JS-функцией так:

window.print = function(){};

Любые вызовы window.print после этого ничего не будет. Вы можете выполнить это на требуемой странице, например, с помощью файла (Greasemonkey).


Вариант 3: Dummy Printer

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

Этот вопрос адресов, создающих фиктивный принтер в Windows.


5
2017-09-11 11:00



Отличный ответ, спасибо! Вариант 1, в частности, служит моим потребностям. Таким образом, я могу заблокировать печать изнутри тестовых классов, а это означает, что не каждый человек, испытывающий тесты, должен установить фиктивный принтер. - Magnilex
Вариант № 1 не помог предотвратить window.print() для меня после нескольких попыток «about: config» и user.js в Mac OS X. - thadk
@thadk Я считаю, что CSP были удалены в какой-то момент. Ваш лучший выбор - переопределить его с помощью usercript. - Bob


Я не понимаю, что теперь связано с Firefox. Это больше о задании на печать.

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

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

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

Там есть возможно какое-то программное обеспечение «виртуального принтера» уже существует, что может быть достаточным для ваших нужд (но рекомендуется, чтобы кто-то здесь не в тему, поэтому, пожалуйста, не думайте, что я бесполезен).


1
2017-09-11 10:35