문제
Safari에서는 비동기 함수안에서 window.open 호출 시 팝업이 차단될 수 있다.
약간의 trick을 이용해 팝업을 열 수 있다.
예시
팝업 X
// 비동기함수를 통해 URL을 받아와서 팝업을 열때 차단된다.
const url = await fetchUrl();
window.open(url, 'popupName', "width=500, height=600")
팝업 X
// 빈 url은 비동기 호출 전에 만들어야한다.
const url = await fetchUrl();
const popup = window.open(undefined, 'popupName', "width=500, height=600")
popup.location.href = url
팝업 O
// 빈 url 생성 후 url 변경.
const popup = window.open(undefined, 'popupName', "width=500, height=600")
const url = await fetchUrl();
popup.location.href = url
'프론트엔드 > Javascript' 카테고리의 다른 글
사파리에서 hover시 filter 속성 적용안되는 이슈 (0) | 2023.09.07 |
---|---|
잊을만하면 찾아왔던 오디오 재생버그 (0) | 2023.08.21 |
화살표 함수는 언제, 왜 써야할까? (0) | 2020.10.30 |
JavaScript- require vs import (CommonJs와 ES6) 차이점 (0) | 2020.10.30 |
실행 컨텍스트 정리 (0) | 2020.10.23 |