未调用Safari的window.matchMedia处理程序

发生afterPrint时,我需要执行doSomethingFunc 。 我的代码在所有浏览器上工作正常,除了当前的Safari版本(OSX上的Safari 10.1和iOS 10.3上的Safari浏览器)。 看来,事件监听器(至less对于打印)不被称为这两个浏览器。

 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 更改日志章节Accessability中有相应的注释。

你不想打电话吗?

  setImmediate(doSomethingFunc); 

什么时候

  mql.matches 

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