2011-01-03 6 views
2

javascriptを使用してOperaブラウザで印刷ダイアログボックスを開こうとしています。 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(); 

、として私のprint()コードは、私はOperaブラウザの印刷ダイアログボックスを開きたいです。誰でも助けてくれますか?

+0

http:// stackoverflowの重複。 com/questions/3482428/window-print-not-working-opera-browserおそらく? –

+0

使用しているOperaのバージョンは?コンソールに何かエラーメッセージが表示されたらどうなりますか? print()は一般的にOperaで動作します(たとえば、Opera Dragonflyのコマンドラインで使用してみてください)。 –

+0

これはwindow.open()の問題と思われます。 – karlcow

答えて

1

Operaでは、印刷ダイアログが表示されるのは、ページが読み込まれている場合(cjrhのコメントのリンクを参照)、動的に開いているウィンドウが印刷しようとするとロードが完了していない可能性があります。この行を交換してみてください:

printWindow.print(); 

をこの行で:

printWindow.onload = printWindow.print; 
+0

優秀!ありがとうございました。 – Pearl

0

私はここで起こって二つのものがあると思う:

他の人が指摘したように
  1. 、Operaはウィンドウことが必要です。 print()は、イベント(クリックイベントまたはロードイベントなど)によってトリガーされます。一般的には、window.print()をイベントリスナーにラップする必要があります。試してみてくださいOperaはまた、JavaScriptを介して開いているウィンドウ上のウィンドウメソッドの一部のサブセットを許可するように見えます。 print()は、許可されたメソッドの1つではありません。

0

私はこの非常に単純な関数の代わりにofissueあなたのコードに置き換えることができますし、オペラやブラウザの残りのためのあなたのニーズを満足させるプリント1でjQueryを介して、この問題を解決しました。

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

は、私は同じ問題を抱えていたし、これは実際に私のために働いていた唯一のソリューションでした:

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

バージョン11.60
ビルド1185
プラットフォームWin32の
システムWindows XP

関連する問題