Printing print()在opera浏览器上不工作

Printing print()在opera浏览器上不工作,printing,opera,Printing,Opera,我正在尝试使用javascript在Opera浏览器中打开一个打印对话框。 print()在所有浏览器中都可以正常工作,但在opera中却无法正常工作。 Myprint()code as var printContent = document.getElementById(elementId); var windowUrl = url; var uniqueName = new Date(); var windowName = 'Print' + uniqueName.getTime(); va

我正在尝试使用javascript在Opera浏览器中打开一个打印对话框。
print()
在所有浏览器中都可以正常工作,但在opera中却无法正常工作。 My
print()
code as

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浏览器中打开“打印”对话框。有人能帮我吗?

在Opera中,仅当页面已加载时才会显示打印对话框(请参阅cjrh注释中的链接),因此,在尝试打印时,您动态打开的窗口可能尚未完成加载。尝试替换此行:

printWindow.print();
printWindow.onload = printWindow.print;
这一行:

printWindow.print();
printWindow.onload = printWindow.print;

我认为这里发生了两件事:

  • 正如其他人指出的,Opera要求window.print()由事件触发:例如,单击或加载事件。通常,您需要在事件侦听器中包装window.print()。尝试
    window.addEventListener('load',函数(e){window.print();},false)
    window.onload=function(){window.print()}

  • 看起来Opera也只允许在通过JavaScript打开的窗口上使用有限的窗口方法子集。print()似乎不是允许的方法之一


  • 我通过jQuery使用这个非常简单的函数解决了这个问题,而不是发布打印函数,您可以在代码中替换它,从而满足您对Opera和其他浏览器的需求

      $(document).ready(function(){
        if($.browser.opera){
         window.print();
        }
        else printWindow.print();
      });
    

    我也有同样的问题,这是唯一对我有效的解决方案:

    window.addEventListener('load', function(e) { window.print(); }, false);
    
    11.60版
    构建1185
    平台Win32
    系统Windows XP


    也许是复制品?你用的是哪个版本的歌剧?如果控制台中有错误消息,您会收到什么错误消息?print()通常在Opera中起作用(例如,尝试在Opera Dragonfly的命令行中使用它。)这似乎是window的问题。open()我将进一步检查。我使用的是Opera 12版本。如果我使用window.print()而不是printWindow.print();然后它可以在opera上运行,但不能在其他浏览器上运行。太棒了!非常感谢。