我需要提供在成功保存时以及打印重定向到搜索页面后打印标签的能力。这适用于 chrome、firefox、ie、iOS 6/7 safari 等。但是,当从 javascript 发出 window.print() 时,iOS 8 似乎不再停止 javascript 的执行。
如果您导航到这个 jsfiddle 例子 http://jsfiddle.net/55bevo31/5/从 iOS 8 Safari(连接到计算机,以便您可以查看控制台日志)并单击“打印”按钮,您将看到打印对话框打开时将触发 console.log。因此,如果您想打印然后导航,您将打印错误的屏幕,除非您有足够的时间来进行打印,这在这种情况下是不可接受的延迟。
我做了一个人为的延迟,因为在 iOS 6/7 中,似乎让打印对话框最终停止了 javascript 的执行。在这种情况下,500 毫秒就足以使其工作。
有其他人在 Safari 中的 iOS 8 中执行类似操作时看到过此问题吗?他们是否引入了一个新事件来监听我可以用来执行此操作的事件?
// Example Code
window.print();
setTimeout(function() {
console.log('This should print after the print is issued in the iOS print dialog.');
}, 500);
您可以使用window.matchMedia
(链接 http://caniuse.com/#feat=matchmedia),结合window.onbeforeprint
and window.onafterprint
(用于早期的 IE 支持)。可以找到使用 matchMedia 的良好参考here http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/ and here https://stackoverflow.com/questions/3339789/onbeforeprint-and-onafterprint-equivalent-for-non-ie-browsers.
为满足使用matchMedia
对于 iOS,使用嵌套事件。首先,监听要更改为的媒体类型print
。然后,在该回调中,监听媒体更改回screen
.
if (window.matchMedia) {
var printQuery = window.matchMedia('print');
printQuery.addListener(function() {
var screenQuery = window.matchMedia('screen');
screenQuery.addListener(function() {
//actions after print dialog close here
});
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)