我正在尝试使用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浏览器中打开打印对话框。任何人都可以帮助我吗?
答案 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)
我认为这里发生了两件事:
正如其他人所指出的,Opera要求window.print()由事件触发:例如,点击或加载事件。通常,您需要在事件侦听器中包装window.print()。试试window.addEventListener('load', function(e) { window.print(); }, false);
或window.onload = function(){ window.print() }
看起来Opera也只允许在通过JavaScript打开的窗口上有限的窗口方法子集。 print()似乎不是允许的方法之一。
答案 3 :(得分:0)
我通过这个非常简单的函数通过jQuery解决了这个问题,而不是在你的代码上替换你可以替换的打印版本,并且将满足你对Opera和其他浏览器的需求。
$(document).ready(function(){
if($.browser.opera){
window.print();
}
else printWindow.print();
});