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