2008년 9월 21일 일요일

[플래쉬]플래쉬 테두리 생기는 문제 코딩법

윈도우 자동업데이트로 익스플로러에서 플래쉬의 테두리가 생기는 문제점이 있습니다. 해결방법으로는 아래 목록에 올렸듯이 윈도우 패치를 하는 방법이 있지만 패치를 안한컴퓨터에서는 테두리가 그대로 보이게 됩니다.
이럴경우 플래쉬를 불러올때 코딩을 아래처럼 하시면 됩니다.
플래쉬들어갈 곳에 아래소스를 삽입합니다.

 

 

<script type="text/javascript">Flash('img/main_submenu.swf','920','539')</script>


경로와 가로세로 사이즈는 각자 맞게 수정하세요.

 

 

<script type="text/javascript">

// 플래쉬 호출
function Flash( src,width,height )
{
        html = '';
        html += '<object type="application/x-shockwave-flash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="param" width="'+width+'" height="'+height+'">';
        html += '<param name="movie" value="'+src+'">';
        html += '<param name="quality" value="high">';
        html += '<param name="bgcolor" value="#ffffff">';
        html  +='<param name="wmode" value="transparent">';
        html += '<param name="swliveconnect" value="true">';
        html += '<embed src="'+src+'" quality=high bgcolor="#ffffff" width="'+width+'" height="'+height+'" swliveconnect="true" id="param" name="param" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>';
        html += '</object>';
        document.write(html);
}
</script>


여기에서 색과 투명값등은 사용자에 맞게 수정하시면 됩니다.
외부로 js로 저장후 불러들일려면 아래소스를 삽입하시면 됩니다.

 


<script type="text/javascript" src="js/global.js"></script>


다른방법 (개인적으로 이방법이 가장 좋은거 같습니다.)

http://www.iezn.com/test/ie/index.php
위 주소로 가신후 최신 패치(js)를 다운받으시고, 다른 수정사항없이 그대로 플래쉬를 호출하면 됩니다.
물론 <head>와 </head>사이에 다운받으신 js를 불러들이면 됩니다.

위 주소로 접속이 안될시 아래소스를 js로 저장후 불러들이시면 됩니다.

 

//////////////////////////////////////
// IE Embed patch
//
// @author iezn@iezn.com
// @homepage http://iezn.com
// @create date 2006.04.19
// @last modify 2007.02.15
// @version 0.42
// 배포시 위내용을 포함해 주시기 바랍니다
//////////////////////////////////////
/**
* embed 패치 적용 컨테이너
* null인경우 document 값을 기본으로 합니다
* id값을 설정한경우 설정범위 내에만 적용이 됩니다
*
* 본문이나 일부 노드에만 적용할경우 해당 노드의 id 값을 입력하실 수 있습니다
* 예)
* var __embed_target_id = "contents";
* 로 처리한경우 body 내에 <태그 id="contents">플래쉬,동영상...</태그>
* 안에 내용에만 패치가 적용됩니다
*/
if(typeof(__embed_target_id)=='undefined'){
    var __embed_target_id = null;
}

/**
* embed 패치를 적용할 태그를 설정합니다
* 기본값은 object,eembed,appelt 태그입니다
* false 값인경우 패치에서 제외됩니다
*/
if(typeof(__embed_tags)=='undefined'){
    var __embed_tags = {object:true,embed:true,applet:false}
}

/**
* 플래쉬파일중 flashvars 를 사용할경우 해당 플래쉬의 오브젝트아이디:true 값으로 object를 등록해 주세요
*/
var __flash_force_objs = {};
if(navigator.userAgent.toLowerCase().indexOf('opera')==-1){//opera out
    if(document.attachEvent){
        document.write('<style type="text/css">');
        document.write('object,embed{display:none;}');
        document.write('</style>');
        document.attachEvent('onreadystatechange',
            function (){               
                if(__embed_target_id===null){
                    var __target = document;
                }else{
                    var __target = document.getElementById(__embed_target_id);
                }
                if (document.readyState == "complete"){
                    function _replace(obj){
                        var obj_re = document.createElement(obj.outerHTML);                   
                        obj_re.style.display='inline';
                        obj.parentNode.replaceChild(obj_re,obj);
                    }
                    function _inner(obj){
                        obj.style.display='inline';                   
                        var html = obj.outerHTML;
                        var classid = obj.classid.toLowerCase();
                        if(classid=='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' && typeof(__flash_force_objs[obj.id])=='undefined'){//flash 인경우
                            obj.insertAdjacentHTML('beforeBegin',html);
                            obj.parentNode.removeChild(obj);
                        }else if(classid=='clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b'){
                            //퀵타임

                        }else{
                            //변경하고자하는 ActiveX classid 를 추가하시기 바랍니다
                            if(classid=='clsid:6bf52a52-394a-11d3-b153-00c04f79faa6' || //media 7
                            classid=='clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95' || //6.4
                            classid=='clsid:6bf52a52-394a-11d3-b153-00c04f79faa6' ||
                            classid=='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'
                            ){
                                embed_pos = html.indexOf('embed');
                                if(embed_pos!=-1){//embed 가 존재하는경우
                                    var embed = '<'+html.substr(embed_pos);
                                    embed = embed.substr(0,embed.length-9);
                                    obj.insertAdjacentHTML('beforeBegin',embed);
                                    obj.parentNode.removeChild(obj);
                                }else{
                                    //object로만 되어 있는경우 동영상 부분만 패치한다
                                    var embed = document.createElement('embed');
                                    if(obj.id){
                                        embed.id = obj.id;
                                    }
                                    var total = obj.childNodes.length;
                                    //embed.setAttribute('autostart',0);
                                    if(obj.width){
                                        embed.setAttribute('width',obj.width);
                                    }
                                    if(obj.height){
                                        embed.setAttribute('height',obj.height);
                                    }
                                    for(var k=0;k<total;k++){
                                        n = obj.childNodes.item(k).getAttribute("name");
                                        v = obj.childNodes.item(k).getAttribute("value");
                                        if(n=='URL' || n=='url' || n=='FileName'){
                                            n = 'src';
                                        }
                                        embed.setAttribute(n,v);
                                    }
                                    if(embed.getAttribute('src')){
                                        embed.style.display = 'inline';
                                        obj.parentNode.replaceChild(embed,obj);
                                    }else{
                                        //파일엑세스 object가 아닌경우는 유지한다                               
                                    }
                                }
                            }
                        }
                    }

                    if(__embed_tags.object===true){
                        var objs = __target.getElementsByTagName('object');
                        var i = objs.length;
                        while(i-->0){
                            _inner(objs[i]);
                        }
                    }
                    if(__embed_tags.embed===true){
                        var objs = __target.getElementsByTagName('embed');
                        var i = objs.length;
                        while(i-->0){
                            _replace(objs[i])
                        }
                    }

                    if(__embed_tags.applet===true){
                        var objs = __target.getElementsByTagName('applet');
                        var i = objs.length;
                        while(i-->0){
                            _replace(objs[i])
                        }
                    }
                }
            }
        );
    }
}

 

외부로 불러들인 경우


<script type="text/javascript" src="다운받은js파일"></script>

플래시 플레이어 ActiveX 콘트롤이 9.0.115.0으로 버전 업이 되면서 getURL 을 통해 주소이동이 안되는 경우 플래쉬 호출하는 방법은 http://www.webmini.net/335 의 글을 참고하세요.


댓글 없음:

댓글 쓰기