print () не работает в браузере Opera - PullRequest
2 голосов
/ 03 января 2011

Я пытаюсь открыть диалоговое окно печати в браузере Opera, используя JavaScript.print() отлично работает во всех браузерах, но в опере не работает.Мой print() код как,

var printContent = document.getElementById(elementId);
var windowUrl = url;
var uniqueName = new Date();
var windowName = 'Print' + uniqueName.getTime();
var printWindow = window.open(windowUrl, windowName, 'scrollbars=yes');
printWindow.document.write(printContent.innerHTML);
printWindow.document.close();
printWindow.focus();
printWindow.print();

Я хочу открыть диалоговое окно печати в браузере Opera.Кто-нибудь может мне помочь?

Ответы [ 4 ]

1 голос
/ 14 декабря 2011

У меня была такая же проблема, и это было единственное решение, которое действительно работало для меня:

window.addEventListener('load', function(e) { window.print(); }, false);

Версия 11.60Сборка 1185Платформа Win32Система Windows XP

1 голос
/ 18 января 2011

В Opera диалоговое окно печати будет отображаться только в том случае, если страница загружена (см. Ссылку в комментарии cjrh), поэтому, возможно, открываемое вами окно не завершило загрузку, когда вы пытаетесь его распечатать.Попробуйте заменить эту строку:

printWindow.print();

на эту строку:

printWindow.onload = printWindow.print;
0 голосов
/ 22 ноября 2011

Я решил эту проблему с помощью jQuery с помощью этой очень простой функции вместо того, чтобы выпустить печать, которую вы можете заменить в своем коде и которая удовлетворит ваши потребности в Opera и остальных браузерах.

  $(document).ready(function(){
    if($.browser.opera){
     window.print();
    }
    else printWindow.print();
  });
0 голосов
/ 18 января 2011

Я думаю, что здесь происходят две вещи:

  1. Как уже отмечали другие, Opera требует, чтобы window.print () запускался событием: щелчком или загрузкой, например.В общем случае вам нужно обернуть window.print () в прослушиватель событий.Попробуйте window.addEventListener('load', function(e) { window.print(); }, false); или window.onload = function(){ window.print() }

  2. Похоже, что Opera также допускает только ограниченное подмножество методов окна для окон, которые открываются с помощью JavaScript.print () не является одним из разрешенных методов.

...