TIP게시판

제목 iOS7 Safari에서 window.open이 바로 열리지 않는 문제.
글쓴이 들국화 작성시각 2014/03/11 16:05:45
댓글 : 2 추천 : 1 스크랩 : 0 조회수 : 16870   RSS
iOS7로 업그레이드 되면서 safari에서 새창을 띄우는 문제가 있네요.

Click 이벤트에서 바로 창을 여는거는 가능 하나 예를들어 동적 주소라 생성을 하고 그값으로 새창을 열려고 하니 막혀서 열리지 않네요.

이전에 사용한 코드.
....

var a = document.createElement('a');
a.setAttribute("href", url);
a.setAttribute("target", "_blank");
  
var dispatch = document.createEvent("HTMLEvents");
dispatch.initEvent("click", true, true);
a.dispatchEvent(dispatch);

새로 시도한 방법중 하나는 시물레이션에서는 동작하나 실제 폰에서는 동작을 안하네요.
var new_win = window.open('config:blank', '_blank');

.....

new_win.location = url;

증상은 창이 뜨고나면 비동기적으로 실행되는 스크립트는 진행이 안되고 멈추어서 동작을 안하네요.
당연히 그럴것 같아서 focus()를 조절 했는데 작동을 안하네요.
var t_url;

function GenLink() {
... ajax...

t_url = url;
}


$('#new_win').live('click', 'a', function(event) {
    var duration = 1000;
    GenLink($(this).attr('id'), 3, $(this).attr('ip'));
    
 setTimeout(function(){
  window.open(t_url, '_system');
 }, duration);
});
처음 코드가 window.open이 안되서 객체를 생성해서 트릭을 쓴것인데... 
클릭되는 그 이벤트가 아니면 새창을 못띄우게 막혀 있어서 동적 데이타 생성될때 까지 딜레이 한다음에 창을 오픈 합니다.

예상되는 오류는 1초내에 url을 생성하지 못했을때 빈창이 뜰것 같네요.

 다음글 json_encode 한글 관련 팁
 이전글 불펌 팁 정리 (13)

댓글

한대승(불의회상) / 2014/03/12 17:07:18 / 추천 0
좋은 정보 감사 합니다.

애플에서 모바일 웹을 지원하지 않으려는 걸까요?
들국화 / 2014/03/12 17:40:11 / 추천 0
한대승// 그보다는 보안에 더 신경을 쓰는 모습 같네요.

사용자가 일이킨 이벤트에만 동작을 하는게 해킹의 위험을 줄일수 있지 않을까요...