본문 바로가기

Local Oriented/HTML CSS JS

iOS 에서 alert 와 confirm 작동 오류..?

iOS 의 사파리 웹브라우저에서는 alert 와 confirm 이 modal 로 작동하는데,

iOS 에 설치된 특정 앱에서는 alert 와 confirm 이 modaless 로 작동하기도 하네요..

 

무슨 말이냐 하면,

alert 나 confirm 이 실행되면 화면이 멈추고(block)

사용자가 확인이나 취소를 터치한 후에

다음 코드가 실행되는 것이 기존 프로그래밍의 흐름인데,

마지막 코드까지 모두 실행되고

화면에는 거꾸로 표시가 되는...

마치, 영화 테넷을 보는 듯한.. ㅠ.

 

아직도 감이 안 잡히신 분이라면..

alert(1);

alert(2);

이라고 순서대로 자바스크립트가 세팅되면..

1이 세팅된 알림창이 먼저 열리고 (확인 버튼을 누르면 1 알림창은 닫히고),

2가 세팅된 알림창이 나중 열리는 (확인 버튼을 누르면 2 알림창이 닫힘)

방식이 익히 경험해 왔던 것.

그런데, 해당 앱에서는..

2가 세팅된 알림창이 먼저 열리고 (확인 버튼을 누르면 2 알림창은 닫히고),

1이 세팅된 알림창이 나중 열리는 (확인 버튼을 누르면 1 알림창이 닫힘)

무지막지하고도 이해하기 어려운 현상.

 

iOS 가 이전에는 UIWebView 를 사용하다가 WKWebView 로 변경하면서

기존과 다른 방식으로 처리하다 보니 발생.

iOS 에 설치된 해당 앱에서 이를 고쳐야 할텐데..

WebView 를 이용한 하이브리드 앱에서

앱 쪽 개발사가 이를 받아들이지 않는다면,

웹 애플리케이션 단에서 수정을.. ㅠ.

 

해결을 위해서

jquery-confirm 을 도입해 봅니다.

 

다만, modaless 로 운영해도 되는 로직이면

단순 알림은 alert() 를 사용해도 됩니다.

그리고, modal 로 작동하는 alert() 라도,

추가적인 실행 코드 없이

바로 return 되는 방식이면 alert() 사용 가능.

 

$.confirm() 자체는 영화 테넷 방식으로 작동하기 때문에,

alert 나 confirm 를 대체하는 기점으로 바뀌어야 하는

프로세스 흐름을 잘 정리해야 합니다.

jquery-confirm.js