기본적으로 Safari 에서는 사용자 Click Event 에서만 window.open 을 통한 팝업을 허용하고 있다.
보안 정책 중 하나로 Script 만으로 무분별한 팝업 호출을 제한하고자 하는 목적이다.
Ajax Callback 이나 다른 Function 의 호출 scope 안에서의 window.open 도 허용되지 않는 것과 같다.
아래와 같이 해결할 수 있다.
function callA() {
let winOpen = window.open();
$.ajax({
url: '/userAction.do',
type: 'GET',
success: function (data) {
winOpen.location = data.url;
}
});
}