2012-02-13 10 views
8

私はちょっとしたテストや検索をしているので、これはほぼ確実に "いいえ"だと思いますが、それを検出するためのトリックはありますか?でもかもしれないページ(つまり、JavaScriptから)?デスクトップ/ラップトップでも、システム上にプリンタが設定されているかどうかを知ることはできませんが、少なくともブラウザは印刷ダイアログを表示します。ブラウザが印刷をサポートしているかどうかを判断する

私のAndroidの携帯電話はwindow.print()機能を持っていますが、(それほど意外なことに)何もしません。

再び私は、トピックに関する良い質問は、SO :-)

答えて

5

でありますので、残念ながらそれは無いように見えるほとんど聞いていますのよ。 window.print()関数は、EMCAScript仕様の一部ではありません。これは、それがJavaScript言語の一部である必要はなく、その実装のための適切なドキュメントもないことを意味します。これは未定義の動作なので、テストは非常に困難に見えます。

出典:

編集:私は私のブラウザをテストするために書いた

かわいいスクリプトは、単に印刷機能が存在してチェックしてから尋ね印刷する:

if(window.print) { 
    if(confirm('I can print. Would you like to?')) 
     window.print() 
} 
+0

はい、それは私がかなり決定したことです。さて、今これは参照の良い点として役立つでしょう:-) – Pointy

+2

私はまた、私のブラウザをテストするためにこれを書いています:http://jsfiddle.net/zdY4d/4/ – Jivings

+0

@Jivingsはあなたの答えにフィドルを追加します... – powtac

5

print()方法が同期しています。これにより、印刷ダイアログが表示されたかどうかを決定するために余波をすることが可能になります。

var start = +new Date(); 
window.print(); 
var delta = + new Date() - start; 
console.log(delta); 
if (delta > 100) { console.log('It worked'); } 
+0

ユーザーは印刷できるかどうかテストするために印刷しようとします:)。とにかく、このスクリプトを使用して、印刷が失敗した場合(デルタ> 100でない場合)にメッセージを表示することができます。 – Fernando

+0

私はブラウザがwindow.printを定義していると仮定しています。スクリプトがそれを呼び出そうとしないようにするためですが、実際には次の行のコードを処理するのに100ms以下かかることはありません。私はそれが好きです。私はちょうどそれを実際に呼び出すw/oをテストする方法があったことを望む!しかし、これは私がまだ見てきた最高の解決策です。 – jinglesthula

+1

ご参考までに、そのプラス記号について疑問をお持ちの方は、http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-new-date – jinglesthula

関連する問題