首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >iOS 8 Safari打印重定向不会停止javascript执行

iOS 8 Safari打印重定向不会停止javascript执行
EN

Stack Overflow用户
提问于 2014-10-13 18:29:22
回答 1查看 2.1K关注 0票数 8

我需要提供打印标签的能力,在成功保存和打印后重定向到搜索页面。这适用于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中做类似的事情时,有没有其他人看到过这个问题?他们有没有介绍一个新的活动来听我可以用来做这件事?

代码语言:javascript
代码运行次数:0
运行
复制
// Example Code
window.print();
setTimeout(function() {
    console.log('This should print after the print is issued in the iOS print dialog.');
}, 500);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 15:36:49

您可以使用window.matchMedia (caniuse链接),结合window.onbeforeprintwindow.onafterprint (用于早期的IE支持)。matchMedia的使用可以找到一个很好的参考这里这里

要满足使用matchMedia和iOS的要求,请使用嵌套事件。首先,侦听要更改为print的媒体类型。然后,在回调内部,倾听媒体将其转换为screen

代码语言:javascript
代码运行次数:0
运行
复制
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
        });
    });
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26346527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档