dev/web

팝업차단을 피하는 방법-네이버앱

재삐신생 2014. 4. 7. 16:49
반응형

일반적으로 팝업 차단이 팝업을 차단하는 방법은

사용자의 동의없이 팝업을 띄우는(무분별한 팝업)을 막아주는기능이라,


window.open으로 뜨는것들이 대부분이다.

하지만, 호출의 주체가 사용자의 액션에 의한 것이면, 그것은 보통 문제없이 팝업을 띄워준다.


하지만 약간 애매한 부분이 있다.

form을 새창으로 submit하는 경우다.


사용자의 액션이 없이도, 이 로직은 팝업차단을 회피하는 가장 편한 방법이다.

하지만, 브라우져에 따라서, 이것을 막는 경우도 있고, 아닌 경우도 있다.


일례로 안드로이도 네이티브(기본) 브라우저는  form.submit()을 사용해서 팝업을 띄울수 있지만

네이버앱은 그렇지가 않다. 팝업이 차단되었다는 메세지도 보이지 않는다.


지금 약간 황당한데, 네이버앱을 일반 인터넷으로 사용하는 사람들이 많다. 인터넷=네이버

어쩔 수 없이, 다른 회피 방법을 생각하고 있다.


현재 작업중인 사이트는 모바일웹에서 내부 iframe으로 여러가지 처리를 하는데,

사용자의 액션은 iframe에 페이지를 띄우는 것이고, iframe에서 새창이 떠야 한다.

iframe에서 뜨는 새창은 사용자 액션이 아니므로, 기본적인 팝업차단에 걸리게 되고, 아무동작도 하지 않는다.

window.open과 form.submit 둘다 안된다.


customEvent를 생성해서 처리를 하는것도 우아한 방법은 아닌듯 하다.


고민중....네이버앱에서 이것저것 처리를 해보고있다.


좀더 확인을 해보니, iframe에서 변경된페이지 내에서 모바일체크를 시도 모바일이면 또 form.submit()을 하는데, 여기서 부터가 안되는거다.....새창이 뜨지 않는 것!! submit은 실행이 되지만, _self 아닐경우, 새로운 창을 생성하지 않는 것이다. 고로 submit무시!


그래서 사용자액션 이벤트(버튼클릭시)에서 window.open으로 팝업을 열어주고, iframe에 submit이 되면

iframe페이지에서 열린 새창으로 submit을 하면 문제없이 진행이 된다.(뭐이리 복잡한 구조인지-_-)


그리곤 팝업처리는 새창에서 모두 처리하면 되는거지..

네이버 앱은 popup용 액티비티가 있는것같은데, alert를 잘못사용하니, 먹통이 되는 오류가 있었다.

이거 생각보다 심각하다. 스크립트 실행에 오류가 있는듯 하다.//추후


아무튼 해결!! iframe을 통째로 들어내지 않아서 다행인지, 잘된건지는 모르겠다




반응형