Androidデバイス(Nexus 5、Nexus 10、Galaxy S4およびGalaxy Tab 3をテストしました)では、JavaScriptのwindow.print()
コマンドは何も実行しません。エラーが登録されていないこともわかります。
モバイルChromeのメニューを使用して「印刷」を選択できるため、これらのブラウザのすべてではないにしてもほとんどが印刷できることを私は知っています。
なぜwindow.print()
が期待する動作(クライアントの印刷メニューを開く)をトリガーしないのですか?そして、window.print()
の代わりにAndroid)はありますか?
私は同様の問題に取り組んでおり、この解決策を思いつきました:
$(document).ready(function($) {
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("Android") > -1; //&& ua.indexOf("mobile");
$('button.print').click(function(e) {
e.preventDefault();
if (isAndroid) {
// https://developers.google.com/cloud-print/docs/gadget
var gadget = new cloudprint.Gadget();
gadget.setPrintDocument("url", $('title').html(), window.location.href, "utf-8");
gadget.openPrintDialog();
} else {
window.print();
}
return false;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="print">Print this page</button>
これが機能するかどうかを確認する時間がありませんでした。現在、Androidデバイスを持っていません。これについてフィードバックをお寄せください;-)
使用 Googleクラウドプリント (GCP)-アプリは必要ありません。ただし、ユーザーはGCPを介してプリンターをセットアップしている必要があります。
この例では、 GCPガジェット を使用しています
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Print</title>
</head>
<body>
<div>
<p>On Android devices (I have tested Nexus 5, Nexus 10, Galaxy S4 and Galaxy Tab 3) the window.print() command in javascript doesn't do anything, as far as I can tell it doesn't even register an error.</p>
<p>I know for a fact that most if not all of these browsers can print because you can use mobile chromes menu to choose "print". My questions is, why doesn't window.print() trigger the behavior you would expect (opening the clients print menu).
And is there an Android alternative to window.print()?</p>
</div>
<div id="gcpPrint"></div>
<script src="https://www.google.com/cloudprint/client/cpgadget.js">
</script>
<script>
var gadget = new cloudprint.Gadget();
gadget.setPrintButton(cloudprint.Gadget.createDefaultPrintButton("gcpPrint"));
gadget.setPrintDocument("text/html", "Print", document.documentElement.innerHTML);
</script>
</body>
</html>
私は、direct print()メソッドがデフォルトでデバイスで無効になっていると思います。プリンター付きの携帯電話やその他のAndroidデバイスはあまり見かけませんでしたが、USBを使えばもちろん可能です。
代わりに、コンテンツ/ページをPDFとして保存し、クラウドプリントサービスを介して印刷することをお勧めします。
現在、window.print()
はAndroidデバイスで動作しています。
この時点で、window.print()機能はmy Android 5.0.1デバイスとChromeおよびデフォルトのブラウザの両方)で完全に機能します。