У меня есть страница с простым «печатным» изображением / ссылкой, которая выполняет простой обработчик javascript onclick
.Я обнаружил, что Chrome будет жаловаться на страницу с предупреждением «Не отвечает на страницу», когда я слишком долго просматриваю диалоговое окно печати.Я не вижу такого поведения в других браузерах.
HTML выглядит следующим образом:
<a onclick="if(window.print) window.print(); return false;">
<img src="print-button.png" alt="[Print]" />
</a>
На странице нет других активных сценариев, поэтому я предполагаю, что это onclick
проблема в обработчикеМое предположение заключается в том, что Chrome делает что-то подобное за кулисами:
- Принимать событие нажатия от ОС
- См.
onclick
существует обработчик - Запуск секундомера
- Вызов
onclick
обработчик onclick
вызов обработчика window.print()
(какие блоки, ожидающие ввода пользователя) - [проходит время]
- Секундомер указывает, что прошло слишком много времени
- Chrome выдает предупреждение пользователю
Я бы посчитал это ошибкой в Chrome, если это правда, поскольку window.print
звонок не должен быть «приурочен».То есть это блокирующее интерактивное действие пользователя, и пользователю разрешено отнимать столько времени, сколько ему нужно.
Я пытался обмануть, выполнив следующее:
<a onclick="if(window.print) setTimeout(function() { window.print(); }, 0); return false;">
<img src="print-button.png" alt="[Print]" />
</a>
..... но это ничего не меняет - Chrome все еще жалуется на продолжительный скрипт.
Использую ли я неправильную технику для запуска диалога печати?Или это ошибка в Chrome?
Я работаю v72.0.3626.119 на 64-битном Mac, и я не могу воспроизвести это , пока у меня есть клиент, работающий с той же версией в 64-немного Windows, и она сообщает об этой проблеме.