未调用Safari window.matchMedia处理程序

时间:2017-04-13 07:51:09

标签: javascript ios safari media-queries matchmedia

当afterPrint发生时,我需要执行doSomethingFunc。我的代码在所有浏览器上都运行良好,除了当前的Safari-Versions(OSX上的Safari 10.1和iOS 10.3中的Safari浏览器)。似乎没有为这两个浏览器调用事件监听器(至少用于打印)。

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

window.print();

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

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

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

1 个答案:

答案 0 :(得分:-1)

你不想打电话吗

        setImmediate(doSomethingFunc);

    mql.matches

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