未调用Safari window.matchMedia处理程序

m4l*_*lt3 9 javascript safari ios media-queries matchmedia

doSomethingFunc当afterPrint发生时,我需要执行.我的代码在所有浏览器上都运行良好,除了当前的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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 -1

你不想打电话吗

        setImmediate(doSomethingFunc);
Run Code Online (Sandbox Code Playgroud)

什么时候

    mql.matches
Run Code Online (Sandbox Code Playgroud)

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