print()无法在Opera浏览器上运行

时间:2011-01-03 07:41:05

标签: printing opera

我正在尝试使用javascript在Opera浏览器中打开一个打印对话框。 print()在所有浏览器中都运行良好,但在Opera中它不起作用。 我的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 个答案:

答案 0 :(得分:1)

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

printWindow.print();

这一行:

printWindow.onload = printWindow.print;

答案 1 :(得分:1)

我遇到了同样的问题,这是唯一对我有用的解决方案:

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

版本11.60
  建1185年   平台Win32
  系统Windows XP

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我通过这个非常简单的函数通过jQuery解决了这个问题,而不是在你的代码上替换你可以替换的打印版本,并且将满足你对Opera和其他浏览器的需求。

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