Javascript window.open Firefox / Chrome проблема - PullRequest
0 голосов
/ 13 апреля 2010

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

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, в результате диалоговое окно печати отображается первым, пока экран все еще загружается. Мне нужно закрыть диалоговое окно печати, чтобы правильно отобразить страницу, а затем печатать вручную.

Пожалуйста, сообщите.

Ответы [ 3 ]

0 голосов
/ 13 апреля 2010

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

0 голосов
/ 13 апреля 2010

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

popup.html

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

main.html

function popupLoaded() {
  popup.print();
}
0 голосов
/ 13 апреля 2010

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

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

(не тестировалось)

...