Использование window.print() или альтернативы на устройствах Android
На устройствах Android (я тестировал Nexus 5, Nexus 10, Galaxy S4 и Galaxy Tab 3) window.print()
Команда в JavaScript ничего не делает. Насколько я могу судить, он даже не регистрирует ошибку.
Я точно знаю, что большинство, если не все эти браузеры могут печатать, потому что вы можете использовать меню мобильного Chrome, чтобы выбрать "печать".
Почему не window.print()
вызвать поведение, которое вы ожидаете (открытие меню печати клиентов)? И есть ли альтернатива Android window.print()
?
6 ответов
В этой Документации четко указано: "Команда поддерживается в iOS, Chrome в Windows и Safari и Chrome в Mac. Она не поддерживается в Android".
Телефоны на Android пока не имеют встроенной поддержки печати, поэтому window.print()
не будет работать. Это означает, что вам нужно использовать стороннее приложение для печати. Вы можете найти некоторые альтернативы в этой статье.
Я работаю над проблемой симуляции и придумала это решение:
$(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 Cloud Print (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>
Я думаю, что метод прямой печати () отключен на устройствах по умолчанию. Я не видел так много телефонов или других устройств Android с принтером, однако по USB это возможно, конечно.
Вместо этого рекомендуется сохранить содержимое / страницу в формате PDF и распечатать его через какой-либо облачный сервис печати.
На данный момент функция window.print() прекрасно работает на моем устройстве Android 5.0.1 с Chrome и браузером по умолчанию.
Загрузите Adobe Acrobat в свой телефон, и вы можете использовать windows.print() в мобильном телефоне.