2017-04-13 45 views
8

当afterPrint发生时,我需要执行doSomethingFunc。我的代码在所有浏览器上都能正常工作,除了当前的Safari-Versions(OSX上的Safari 10.1和iOS 10.3上的Safari浏览器)。看起来事件监听器(至少是用于打印)不会被这两个浏览器调用。Safari window.matchMedia处理程序未调用

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章节有一个相应的注释Accessability。

+0

是的,我已经体验过相同的事情 - 原来(在我的情况下),如果打印在1页内,它会触发处理程序就好了。如果打印页面超过一页,则会被完全忽略。 虽然我还没有发现任何错误报告。 – Rolchau

+0

是的,我想这个功能并不经常使用。如果您在bugreport.apple.com上撰写了错误报告,我将非常高兴。我也是这样做的。令人遗憾的是,苹果对它的缺陷很不透明,所以我们不知道苹果是否已经注意到它。 – m4lt3

回答

-1

你不是想打电话给

 setImmediate(doSomethingFunc); 

mql.matches 

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

+0

如果你说'!mql.matches'你在afterPrint-Event期间正在做什么,并且你说'mql.matches'你在beforePrint-Event期间正在做什么。 – m4lt3

+0

只是问。你原来的问题并没有说明你想要afterPrint-Event。感谢您的反对票,现在我更多地了解SO的工作原理。 – oopoopoop

相关问题