我需要提供打印标签的能力,在成功保存和打印后重定向到搜索页面。这适用于chrome、firefox、即iOS 6/7 safari等。然而,当iOS ()从javascript发出时,window.print 8似乎不再停止执行window.print。
如果从这个轻巧的例子 8 Safari导航到iOS (连接到计算机以便查看控制台日志)并单击“打印”按钮,则会看到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);
发布于 2014-10-16 15:36:49
您可以使用window.matchMedia
(caniuse链接),结合window.onbeforeprint
和window.onafterprint
(用于早期的IE支持)。matchMedia的使用可以找到一个很好的参考这里和这里。
要满足使用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
});
});
}
https://stackoverflow.com/questions/26346527
复制相似问题