2017-04-13 19 views
8

0Prame gerçekleştiğinde, doSomethingFunc'u çalıştırmam gerekir. Kodum, geçerli Safari Sürümleri (OSX Safari 10.1 ve iOS 10.3'ten Safari Tarayıcı) dışında tüm tarayıcılarda düzgün çalışıyor. Bu iki tarayıcı için olay dinleyicileri (en azından baskı için) çağrılmıyor gibi görünüyor.Safari window.matchMedia işleyicisi

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

window.print(); 

Yukarıdaki kod OSX Safari 9.1.2 ve iOS 10.2'den Safari ile mükemmel çalışır. Geçerli sürümlerle değil.

Birisi benzer bir şey farketti mi? Ya da mevcut Safari sürümleri için kodumu geliştirmem gerekiyor mu?

Tahmin ettiğim, bu bir Safari hatasıdır, çünkü Safari 10.1 changelog Erişilebilirlik bölümünde buna karşılık gelen bir not bulunmaktadır.

+0

Evet, aynı şeyi deneyimliyorum - Çıktısı (1) durumundaysa, işleyiciyi işten çıkarır. Baskı birden fazla sayfa ise, tamamen yok sayılır. Henüz bir hata raporunu bulamadım. – Rolchau

+0

Evet, sanırım bu özellik çok sık kullanılmıyor. Bugreport.apple.com hakkında bir hata raporu yazmış olsaydım çok memnun olurdum. Ben de aynısını yaptım. Ne yazık ki elma, böcekleri ile çok şeffaftır, bu yüzden elmanın zaten fark edip etmediğini bilmiyoruz. – m4lt3

cevap

-1

aramak istediğiniz vermedi

 setImmediate(doSomethingFunc); 

mql.matches 

True? Neden '!' sonra?

+0

Eğer '! Mql.matches' derken, AfterPrint-Event sırasında bir şeyler yapıyorsunuz ve eğer' mql.matches' diyorsanız, beforePrint-Event sırasında bir şeyler yapıyorsunuz. – m4lt3

+0

sadece soruyorum. Orijinal sorunuz, afterPrint-Event'i istediğinizi belirtmedi. Aşağı oy için teşekkürler ve şimdi SO'nun nasıl çalıştığına dair daha fazla şey öğreniyorum. – oopoopoop