Safari window.matchMedia 处理程序未调用

问题描述 投票:0回答:1

当 afterPrint 发生时,我需要执行

doSomethingFunc
。我的代码在所有浏览器上都能正常工作,除了当前的 Safari 版本(OSX 上的 Safari 10.1 和 iOS 10.3 上的 Safari 浏览器)。看来这两个浏览器没有调用事件侦听器(至少对于打印)。

const mediaQueryPrint = window.matchMedia('print');
mediaQueryPrint.addListener((mql) => {
    if (!mql.matches) {
        setImmediate(doSomethingFunc);
    }
});

window.print();

上面的代码与 OSX Safari 9.1.2 和 iOS 10.2 的 Safari 完美配合。 但当前版本不行。

有人注意到类似的事情吗?或者我是否必须针对当前 Safari 版本改进我的代码?

我的猜测是,这是一个 Safari 错误,因为 Safari 10.1 changelog 的“可访问性”章节中有相应的注释。

javascript ios safari media-queries matchmedia
1个回答
-1
投票

你不想打电话吗

        setImmediate(doSomethingFunc);

什么时候

    mql.matches

是真的吗?为什么 '!'然后呢?

© www.soinside.com 2019 - 2024. All rights reserved.