【问题标题】:print() not working on opera browserprint() 在 Opera 浏览器上不起作用
【发布时间】:2011-01-03 07:41:04
【问题描述】:

我正在尝试使用 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 浏览器中打开打印对话框。谁能帮帮我?

【问题讨论】:

  • 您使用的是哪个版本的 Opera?如果您在控制台中收到什么错误消息? print() 通常在 Opera 中有效(例如,尝试在 Opera Dragonfly 的命令行中使用它。)
  • 这似乎是 window.open() 的问题,我会进一步检查。
  • 我使用的是 Opera 12 版本。如果我使用 window.print() 而不是 printWindow.print();然后它在歌剧上工作,但它不会在其他浏览器上工作。

标签: printing opera


【解决方案1】:

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

printWindow.print();

用这一行:

printWindow.onload = printWindow.print;

【讨论】:

  • 太棒了!谢谢。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      我通过 jQuery 用这个非常简单的函数解决了这个问题,而不是发出 print 一个,你可以在你的代码上替换它,它将满足你对 Opera 和其他浏览器的需求。

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

      【讨论】:

        猜你喜欢
        • 2011-12-07
        • 2013-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        相关资源
        最近更新 更多