Web compat: polyfill MediaQueryList.addEventListener() for Safari < 14 (#36274)

This commit is contained in:
Leon Sorokin 2021-06-30 21:36:03 -05:00 committed by GitHub
parent 8aeb1cc030
commit b8010ba9f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import 'regenerator-runtime/runtime';
import 'whatwg-fetch'; // fetch polyfill needed for PhantomJs rendering
import 'abortcontroller-polyfill/dist/polyfill-patch-fetch'; // fetch polyfill needed for PhantomJs rendering
import './polyfills/old-mediaquerylist'; // Safari < 14 does not have mql.addEventListener()
import 'file-saver';
import 'jquery';

View File

@ -0,0 +1,20 @@
// Safari < 14 does not have mql.addEventListener(), but uses the old spec mql.addListener()
let oMatchMedia = window.matchMedia;
type MqlListener = (this: MediaQueryList, ev: MediaQueryListEvent) => any;
window.matchMedia = (mediaQueryString) => {
let mql = oMatchMedia(mediaQueryString);
if (!mql.addEventListener) {
mql.addEventListener = (type: string, listener: MqlListener) => {
mql.addListener(listener);
};
mql.removeEventListener = (type: string, listener: MqlListener) => {
mql.removeListener(listener);
};
}
return mql;
};