본문 바로가기

Story/Javascript

페이지에서 파일다운시도후 플레쉬링크 클릭시 지정되지 않음 오류 나올경우 해결방법

반응형
페이지에서 파일다운시도후 플레쉬링크 클릭시 지정되지 않음 오류 나올경우 해결방법
우선 에러나 나올경우를 살펴보면
flash 내부에
getURL("javascript:test();");
와 같은 형태로 자바스크립트를 호출하도록 지정해두었다
이와 같이 처리했을때 제목과 같은 문제가 발생하였다

첫번째 해결했던 방법은
플레쉬에는 수정사항이 없고
<a href="파일">파일</a> 와 같은 형태를
<a href="파일" target="downframe">파일</a>
<iframe id="downframe" name="downframe" width=0 height=0></iframe>
과 같은 형태로 사용하는것인대 한국에서 확인해볼때는 문제가 없었으나 중국에서 사용할때 적용되지 않아 두번째 방법을 찾게 되었다.


두번째 해결했던 방법은

==== 플레쉬 부분 수정할 사항 ====
기존의 방식 : getURL("javascript:lm63();");
수정한 방식 : fscommand('lm63()');


==== 프로그램 부분 수정할 사항 ====
1. mEmbed.js 파일에 추가된 부분

function swf_obj(src,w,h,swfid){
swf_html = '';
swf_html += '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="'+w+'" HEIGHT="'+h+'" id="'+swfid+'">';
swf_html += '<param name="movie" value="'+src+'">';
swf_html += '<param name="quality" value="high">';
swf_html += '<PARAM NAME="menu" VALUE="false">';
swf_html += '<PARAM NAME="wmode" VALUE="transparent">';
swf_html += '<EMBED src="'+src+'" menu="false" wmode="transparent" quality="high" WIDTH="'+w+'" HEIGHT="'+h+'" NAME="'+swfid+'"></EMBED>';
swf_html += '<\/object>';
document.writeln(swf_html);
}
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
function link_DoFSCommand(command, args) {
var eventObj = InternetExplorer ? event : document.event;
eval(command)
}
2. 프로그램상 추가해야할 부분

<script type="text/vbscript" src="js/fsCommand.js"></script>
위 파일 내용은

on error resume next
sub link_FSCommand(ByVal command, ByVal args)
call link_DoFSCommand(command, args)
End sub
3. 프로그램 수정해야 될부분
기존의 방식 : <script>mEmbed('src=fla/l_intr.swf?sub=2','width=180','height=290', 'wmode=Transparent');</script>
수정한 방식 : <script>swf_obj("fla/l_intr.swf?sub=2","180","290","link")</script>
와 같이 수정하여 사용하여 문제를 해결하였다
하지만 flash 수정과 vbscript 사용해야 하는 문제와 javascript 도 해결해야 하고 여러 플레쉬를 사용할경우 함수를
플레쉬 갯수만큼 추가해야 하는 불편함이 있었다.


세번째 이번에 사용한 방법은
flash의 External API 를 이용하는 방법이다.
ExternalInterface 클래스는 다음 경우에만 사용할 수 있습니다.

지원되는 모든 버전의 Internet Explorer for Windows(5.0 이상)
포함된 사용자 정의 ActiveX 컨테이너(예: Flash Player ActiveX 컨트롤을 포함하는 데스크톱 응용 프로그램)
NPRuntime 인터페이스를 지원하는 브라우저로 현재 다음과 같은 브라우저가 있습니다.
Firefox 1.0 이상
Mozilla 1.7.5 이상
Netscape 8.0 이상
Safari 1.3 이상

방법은
ActionScript 에

import flash.external.ExternalInterface; // 추가
기존의 방식 : getURL("javascript:lm63();");
수정한 방식 : ExternalInterface.call("lm63");
와 같은 방식으로 수정해주었다

아직까지는 세번째 방법이 제일 간단하였다.
참고 사이트 주소는
http://livedocs.adobe.com/flash/9.0_kr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001059.html
반응형