Javascript window.open проблема с firefox/chrome

У меня есть приложение для открытия всплывающего окна для печати страницы.

function printHTML(urlPath) {
    var printPopUp = window.open(urlPath,null,"height=600,width=777,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes");
    printPopUp.print();
}

Этот скрипт отлично работает в IE, но в firefox/chrome. Функция print() перекрывает window.open, в результате диалоговое окно печати отображается первым, пока экран еще загружается. Мне нужно закрыть диалоговое окно печати, чтобы правильно отобразить страницу, а затем распечатать вручную.

Пожалуйста, порекомендуйте.


person NoodleX    schedule 13.04.2010    source источник
comment
URL-адреса, которые вы будете печатать, находятся в том же домене?   -  person Kinlan    schedule 13.04.2010


Ответы (3)


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

всплывающее окно.html

<script>
function onLoad() {
  if(window.opener && window.opener.popupLoaded) {
    window.opener.popupLoaded();  
  }
}
</script>
<html onload="onLoad();">

main.html

function popupLoaded() {
  popup.print();
}
person Kinlan    schedule 13.04.2010

Запустите печать после загрузки страницы, например.

printPopUp.onload = function() { printPopUp.print() }

(не испытано)

person Nickolay    schedule 13.04.2010

Я предлагаю вызывать window.print() на странице, загружаемой во всплывающее окно, а не в опенере.

person Tim Down    schedule 13.04.2010
comment
не может, потому что это глобальный скрипт, он используется на всех страницах. Если я делаю так, мне нужно дублировать код на всех страницах. - person NoodleX; 13.04.2010