ウィンドウでブラウザ レベルの印刷ダイアログを開くボタンを提供しようとしています。私は最初に window.print(); を試しました。jQueryを使用して、インラインの「onclick」<input>
と入力のclick()関数を使用し、クリックすると両方とも同じエラーが発生します。
TypeError: オブジェクト [オブジェクト グローバル] のプロパティ 'print' は関数ではありません
これはポップアップ ウィンドウであることを指摘しておく必要がありますが、親ページで window.print() を使用する任意の形式が正常に機能することを除けば、それが問題になるとは思いませんでした。
ウィンドウオブジェクトのどこかで何かが起こっているに違いないように思えたので、コンソールで次のことを行いました。
ウィンドウ名
"加入"
window.self
ウィンドウ {上: ウィンドウ、ウィンドウ: ウィンドウ、場所: ロケーション、外部: オブジェクト、クロム: オブジェクト…}
窓の場所
場所{割り当て: 関数、置換: 関数、リロード: 関数、祖先オリジンズ: DOMStringList、オリジン: "http://local.xxx.xxx:8080"…}
したがって、ウィンドウ オブジェクトがそこにあり、期待どおりに定義されているように見えます。
この同じウィンドウ オブジェクトに対して、close()、confirm()、alert()、scrollTo() などの他のメソッドを実行することもでき、それらは正常に動作します。では、なぜ print() を使わないのでしょうか?
ページの内容は問題ではないようです。iFrame やフレームも使用していません。ポップアップのすべてのコンテンツを次のように置き換えました
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head></head>
<body>Foo</body>
</html>
同じ結果で。したがって、他のコードが干渉していないことはほぼ確実です。
編集
print() をトリガーするために使用していたコード:
$('.foobar').click(function(){
window.print();
});
今はコンソールでやっています。
ボタン
<input type="button" class="foobar" value="Print" />