본문 바로가기

html, asp, php 에서 플래시로 변수 전달할때 크롬, 파폭에서는 전달이 안될때 혹은 유의사항이다.

반응형

아..익스에서는 잘 됐는데...파폭, 크롬에서는 안돼...
요새는 페이지에 플래시를 삽입할 경우~~object 태그나 embed 태그를 동시에 써서,
크로스브라우징을 하게 된다.
예를 들어서 보통 html에서 flash로 변수값(parameter) 넘겨줄때 방법중  많이 쓰던 방식을 말하자면,

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="200" height="200" id="setParam" align="middle">

<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="setParam.swf?변수1=변수1값&" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="bb" value="aaaaaaa" />

<embed src="setParam.swf" quality="high" bgcolor="#ffffff" width="200" height="200" name="setParam" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="
http://www.macromedia.com/go/getflashplayer" />


이렇게 object, embed 태그를 두번 쓰는 이유는 익스계열에서는 object 태그를 사용해 플래시를 가져오고,
파폭이나, 크롬에서는 embed 태그를 사용해서 플래시를 가져오기 때문이다.
그리고, 변수를 플래시에 넘길 시에는 get 방식으로 전달한다 한다면 ?, & 사용해서 하면 되었었다.

하지만, 익스플로러 옵션에서 temporary 설정을 auto(default)이상으로 해놓았을 경우.
이렇게 되면 temporary 에도 setParam.swf?변수1=변수1값 이런 파일 명으로 저장이 되어버린다.

그렇게 되면 한번 방문해서 로드된 swf인데도 익스플로러에선 새 버전으로 인식해서
방문할 때, 변수 값이 틀려질 때마다, 다시 로드를 하게 된다. 

이런 swf가 용량이 몇메가가 넘어가는 경우이면, 아주 치명적이다 방문할때마다 시간을 변수로 받는 사이트라면
방문할때마다 분명 새로 로딩을 시작하게 되므로.. 이 방법은 사용 안하는게 좋을듯 싶다.
더군다나, embed 태그에서는 변수 전달도 한글이 깨져서 전달 된다....


따라서 내가 해결한 방법은...

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="200" height="200" id="setParam" align="middle">

<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="setParam.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="bb" value="aaaaaaa" />
<param name=FlashVars value="변수1=변수1값&" />

<embed src="setParam.swf" FlashVars="변수1=변수1값&" quality="high" bgcolor="#ffffff" width="200" height="200" name="setParam" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="
http://www.macromedia.com/go/getflashplayer" />

이렇게 따로 FlashVars 를 사용하면 모든게 해결되더라, 결국 같은 방식이지만,

약식으로 사용하냐, 정석적으로 사용하냐에 차이인것 같다.
temporary 에도 뒤에 변수가 붙지않은 swf 파일명 그대로 저장되어지고, 변수전달도 아주 깔끔하다.
역시 플래시에서 지원해주는 장려해주는 방법으로 해야 고생을 안하는 것 같다.
플래시를 포함한 웹 페이지에서 페이지를 로드할 시에나
버튼으로 이벤트를 주어 플래시 파일(swf)에 변수를 전달할 일이 있을때 유의사항이다.

반응형