ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 플래시에서 팝업 차단걸리는 문제 해결하기~
    카테고리 없음 2010. 11. 1. 20:34
    펌글: http://blog.uix.kr/22

    이 글은 ActionScript3(as3), 플래시플레이어 9,10 기준으로 작성 되었습니다

    플래시 as3의 기본 URL이동 메소드는 navigateToURL()입니다.
    하지만 이 기본 메소드를 사용하여 새창을 띄울때 IE의 기본팝업차단 기능에 걸리는 어처구니 없는 버그가 있군요.  
    처음에는 swf를 웹페이지에 삽입하는 속성중에 wmode를 transparent로 했을경우에만 발생하는 문제인줄 알았으나 wmode와는 상관없이 IE에서는 document를 한번 마우스로 클릭하고 플래시링크를 클릭했을경우에는 모두 팝업차단에 걸려 버립니다

    팝업차단 예제

    • navigateToURL : navigateToURL()메소드를 이용한 새창 열기
    • ExternalInterface : ExternalInterface.call("window.open", req.url);  형태로 새창 열기
    • 혼합형 : IE일 경우 무조건 ExternalInterface를 사용하는 메소드 사용(하단소스참고)

    여러 브라우저에서 테스트를 해본 결과

    현재 해결한 방법은 wmode를 transparent로 하고 –이럴경우 여러가지 2차적인 문제가 발생할수 있습니만 ;;- IE경우에만 ExternalInterface 을 사용하는 형태로 변경하니 모든 브라우저에서 이상이 없네요

    1. var req:URLRequest = new URLRequest("http://daum.net");   
    2.   
    3. //ExternalInterface 버튼   
    4. btn_external.addEventListener(MouseEvent.CLICK,function(){   
    5.     ExternalInterface.call("window.open", req.url);                             
    6. });    
    7. //navigateToURL 버튼   
    8. btn_navigate.addEventListener(MouseEvent.CLICK,function(){   
    9.     navigateToURL(req,"_blank");                                
    10. });   
    11. //혼합형 버튼   
    12. btn_mix.addEventListener(MouseEvent.CLICK,function(){   
    13.     getURL(req,"_blank");   
    14. });            
    15.   
    16. //혼합형버튼에서 사용되는 함수   
    17. function getURL(url:*, target:String="_self"):void  
    18. {      
    19.     var req:URLRequest = url is String ? new URLRequest(url) : url;    
    20.        
    21.     var is_ie:Boolean = Boolean(ExternalInterface.call("function() {if(document.all) return 1; else return 0;}"));     
    22.   
    23.     if (is_ie) ExternalInterface.call("window.open", req.url);   
    24.     else navigateToURL(req, target);   
    25. }  

    ++

    댓글

Designed by Tistory.