2017-04-13 42 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

相關問題