На странице, над которой я работаю, есть функция javascript, выполняемая для печати частей страницы.По какой-то причине печать в Safari заставляет окно как-то обновляться.Я говорю как-то, потому что он на самом деле не обновляется, как при перезагрузке страницы, а скорее запускает «рендеринг» страницы с начала, то есть прокручивает вверх, флэш-анимация начинается с 0 и т. Д.
Эффект воспроизводится этой скрипкой: http://jsfiddle.net/fYmnB/
Нажатие на кнопку печати и завершение или отмена печати в Safari заставляют экран «побелеть» на секунду, что на моем реальном веб-сайте проявляется какчто-то "как" перезагрузка.Запуская кнопку печати с, скажем, Firefox, просто открывает и закрывает диалог печати, не затрагивая страницу скрипта.
Есть ли что-то в моем способе вызова метода печати в браузерах, которое вызывает это, иликак это можно объяснить - и желательно, чтобы избежать?
PS: На моем реальном сайте то же самое происходит с Chrome.В примере скрипта Chrome, похоже, не демонстрирует того же поведения, что и Safari.
Редактировать: Я также пытался установить кнопку печати на другом теге, чем привязка a
, например span
или button
, но это не помогло с проблемой.
Редактировать: я столкнулся с этой проблемой с Safari 5.1.2 на Mac OS 10.6.8.В примере с jsfiddle поведение отображается в виде белого «мерцания», которое покрывает весь браузер после нажатия кнопки печати и закрытия (либо печати, либо прерывания) диалога печати.
Редактировать: только что началось вознаграждение заэтот вопрос, поскольку я все еще ищу объяснение этому поведению браузера.Я более чем готов дать более подробную информацию по этому вопросу.Исходя из моего опыта в SO, не рекомендуется размещать ссылки на онлайн-страницы, однако я чувствую, что проблему действительно трудно воспроизвести.Я думаю, что "мерцание и повторный рендеринг", который я испытываю с размещенным jsfiddle, является, надеюсь, результатом той же проблемы.
Редактировать: Как объяснено в комментариях, открытие нового окна, содержащего текущее состояние приложениязатем печать и закрытие этого окна может быть исправлением, но я не считаю его достаточным ответом на имеющуюся проблему.