<object> 태그는 포함하고 있는 컨텐츠를 대체 컨텐츠로 인식한다.
<object data="" type=""> <p></p> </object>
위의 경우 type에 지정된 적절한 플러그인을 찾을 수 없을 경우, 포함하고 있는 <p></p>의 내용을 대체로 이용하게 된다.
<object>안에 <object>를 사용할 수도 있다.
<!– 플래시 플러그인 –>
<object data=”hello.swf” type=”application/x-shockwave-flash”>
<!– PNG 이미지 –>
<object data=”hello.png” type=”images/png”>
<!– GIF 이미지 –>
<object data=”hello.gif” type=”images/gif”>
<!– 일반 text –>
<p>Hello!</p>
</object>
</object>
</object>
위의 경우 브라우져가 바깥의 <object>부터 실행을 시도하게 되는데 플러그인 실행에 실패할 경우 안쪽의 object로 실행을 차례로 시도 한다. 각각의 <object>가 자신을 포함하고 있는 상위의 <object>의 대체 컨텐츠 역할을 하게 되고 최종의 <p>는 상위 gif 이미지 <object>의 대체 기능을 하게 된다.
Flash Object 표준으로 삽입
Macromedia Default
<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0″ width=”550″ height=”400″ id=”flash_movie” align=”middle”>
<param name=”allowScriptAccess” value=”sameDomain”>
<param name=”movie” value=”flash_movie.swf”>
<param name=”quality” value=”high”>
<param name=”bgcolor” value=”#ffffff”>
<embed src=”flash_movie.swf” quality=”high” bgcolor=”#ffffff” width=”550″ height=”400″ name=”Untitled-1″ align=”middle” allowScriptAccess=”sameDomain” type=”application/x-shockwave-flash” pluginspage=”http://www.macromedia.com/go/getflashplayer”>
</object>
이 코드는 Macromedia Flash MX 2004 에서 publish 한 것으로 Macromedia 에서 제시한 일종의 cross-browsing code 이다. IE 에서는 classid 를 참조하여 Flash player 를 로딩을 하고 다른 브라우져에서는 embed 를 이용하여 Flash player 를 불로오도록 fallback 을 제공한 것이다. 하지만 이 방법은 deprecated element 인 embed 를 사용하고 있기 때문에 Valid 한 html 코드가 아니다.
W3C 표준 코드를 이용한 Flash player 로딩
<object type=”application/x-shockwave-flash” data=”images/banner.swf” width=”140″ height=”40″>
</object>
Object 표준을 사용하게 되면 실행될 데이터의 type 과 위치를 지정하는 data 만으로 Flash 등을 로딩 할 수 있다 . 하지만 IE 는 data 를 참조하여 Flash player 를 로딩하지 못하므로 IE 에서는 작동을 하지 않는다. 그래서 param 으로 무비 정보를 적어주어야 한다.
<object type=”application/x-shockwave-flash” data=”images/banner.swf” width=”140″ height=”40″>
<param name=”movie” value=”images/banner.swf” />
</object>
이렇게 하면 valid 한 코드로 flash 무비를 불러올 수 있다. 하지만 IE 는 classid 가 없기 때문에 .swf 파일이 완전히 로드되기 전에는 무비가 나오지 않는다. 다시 말해서 flash 의 강점인 스트리밍 기능이 작동을 안해서 프리로딩 같은 기능을 사용할 수 없다. Flash 가 완전히 로딩될때 까지 사각형 박스가 생겨서 클라이언트의 클레임을 받을 수 있다. (실제로 클레임을 제기하는 클라이언트가 있었다.)
Flash Satay
A List Apart의 Flash Satay: Embedding Flash While Supporting Standards 방법을 이용하면 IE 의 오작동을 어느정도 피할 수 있다. 무비를 불러올때 크기(file size)가 아주 작은 container movie 를 사용하하여 미리 Flash player 가 로딩 될 수 있게 하면 프리로딩이나 스트리밍 문제는 해결 된다. 하지만 네트웍 상황이 좋지 않을때에 박스가 나오는 것은 어쩔 수 없다.
Hixie method
IE 에는 HTML 상에서 Condition 을 사용하여 Contents 를 제어 할 수 있다. 이것을 이용하면 표준 코드와 object fallback 을 이용해서 Flash player 뿐만 아니라 다른 object 들도 페이지에 삽입 할 수 있다.
<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″ codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0″ width=”550″ height=”400″>
<param name=”movie” value=”flash_movie.swf”>
<!– Hixie method –>
<!–[if !IE]> <–>
<object type=”application/x-shockwave-flash” data=”flash_movie.swf” width=”550″ height=”400″>
<p><img src=”flash_movie.png” alt=”” /></p>
</object>
<!–> <![endif]–>
</object>
IE 는 classid 로 Flash player 를 로딩하고 embed 된 object 는 conditional comment 로 주석으로 인식이 된다. 표준 브라우져들은 첫번째 classid 에 해당하는 object 가 없기 때문에 object 를 로딩하는데 실패를 하게 되고 fallback 인 하위 element 를 불러오게 된다. Conditional comment 는 IE 전용의 코드이기 때문에 영향을 받지 않고 주석으로 처리 된다. 하위 object 안의 img 는 Flash player 가 없을 경우의 fallback 을 제공한 것이다.
관련링크
- W3C : Generic inclusion: the OBJECT element
- FlashVars Browser Support
- Macromedia Flash OBJECT and EMBED tag syntax
IE Eolas Patch 해결 간단 스크립트
IE의 Eolas Patch를 간단하게 보정하는 스크립트이다. IE의 경우 <object>등의 상위 엘리먼트를 넣어주면 HTML을 지우고 스크립트로 삽입하여 테두리가 생기지 않고 바로 사용자 입력을 받게 해 준다. 컨텐츠의 접근성을 위해서 document.write로 삽입하지 않고 HTML상에 컨텐츠를 일단 삽입하고 script로 처리하는 방식이다.
Script
반드시 외부파일로 만들어서 <script type=”text/javascript” src=”ie-html-rewrite.js”></script>와 같이 불러들여야 한다.
function IE_HtmlRewrite(objParent) {
if (window.ActiveXObject && objParent) { objParent.innerHTML = objParent.innerHTML; }
}
HTML
스크립트를 <object>바로 아래에 넣어도 되고 window.onload 이벤트로 넣어도 된다.
<div id=”flash-movie”>
<object type=”application/x-shockwave-flash” data=”movie.swf”>
</object>
</div>
<script type=”text/javascript”>IE_HtmlRewrite(document.getElementById(“flash-movie”))</script>
주의 할 점은 플래시에서 <param>을 이용해서 flashvar를 <object>로 넘기는 경우 값이 넘어가지 않게 된다. 이 경우 flashvar로 넘기지 않고 data나 movie에 GET방식으로 넘기면 된다.
<object type=”application/x-shockwave-flash” data=”movie.swf?myvar=myvalue”>
</object>
기본적으로 사용하는<embed> 나 <bgsound> 대신 <
음악이나 동영상을 올리는 방법입니다.
<object>를 이용하면 음악을 좀더 많이 제어 할 수 있습니다.
또 최근 우연치않게;; 웹사이트에서 <embed>를 막은곳도 보이고;; 해서;
<OBJECT classid=”clsid:22D6F312-B0F6- <PARAM NAME=”Filename” VALUE=”음악 파일 경로”> <param name=”ClickToPlay” value=”true”> <param name=”AutoSize” value=”true”> <param name=”AutoStart” value=”true”> <param name=”ShowControls” value=”true”> <param name=”ShowAudioControls” value=”true”> <param name=”ShowDisplay” value=”false”> <param name=”ShowTracker” value=”true”> <param name=”ShowStatusBar” value=”false”> <param name=”EnableContextMenu” value=”false”> <param name=”ShowPositionControls” value=”false”> <param name=”ShowCaptioning” value=”false”> <param name=”AutoRewind” value=”true”> <param name=”Enabled” value=”true”> <param name=”EnablePositionControls” value=”true”> <param name=”EnableTracker” value=”true”> <param name=”PlayCount” value=”1″> <param name=”SendWarningEvents” value=”true”> <param name=”SendErrorEvents” value=”true”> <param name=”SendKeyboardEvents” value=”false”> <param name=”SendMouseClickEvents” value=”false”> <param name=”SendMouseMoveEvents” value=”false”> <param name=”ShowGotoBar” value=”false”> <param name=”TransparentAtStart” value=”false”> <param name=”Volume” value=”0″> </OBJECT> |
ㅁ결과…(음악파일경로=http://myhome.
윈도미디어플레이어로 음악을 재생시키기 위해 흔히들 사용하시는 소스입니다.
이 소스에 보시면 PARAM속성이 많이 지정이 되어 있는데…
이 속성의 역할과 활용에 대해 간단히 알아보기로 하겠습니다.
——————————
<PARAM NAME=”Filename” VALUE=”음악 파일 경로”>
이 부분에서 음악 파일 경로를 삽입하고,
밑부분의 <param name> 부분은 기능을 제어하는 태그입니다.
만약 링크 못가져가게 마우스 우측 클릭 후 나타나는 정보창을 막고자 한다면,
<param name=”EnableContextMenu” value=”false”>
이 부분에서 value 값을 true 혹은 false 로 지정하면서 제어할 수 있습니다.
보기와 같이 false로 지정하면 우측 클릭을 해도 반응을 하지 않습니다.
이제 하나하나의 기능을 살펴봅시다.
<param name=”ClickToPlay” value=”true”> |
: 동영상 등을 재생할때 화면을 클릭하면 일시 정지되거나 다시 재생하는 기능을 제어하는 기능입니다. true / false로 제어합니다. |
<param name=”AutoSize” value=”true”> |
: 화면의 비율을 자동으로 제어할 것인지, 말 것인지를 제어하는 기능입니다. true로 해 놓으면 원래 정해진 화면 비율로 자동으로 재생됩니다. |
<param name=”AutoStart” value=”true”> |
: 플레이어창이 뜨면서 자동실행 여부, 즉 autostart와 같은 기능입니다. false로 해놓으면 재생 버튼을 클릭해야 플레이 됩니다. |
<param name=”ShowControls” value=”true”> |
: hidden 태그와 같은 기능으로 false로 지정시 플레이어가 보이지 않게 됩니다. |
<param name=”ShowAudioControls” value=”true”> |
: 이 기능은 플레이어 우측의 볼륨 조절기능과 음소거 기능을 제어하는 기능입니다. false로 지정하시면 플레이어에서 볼륨 조정과 음소거 조절하는 부분이 사라집니다. |
<param name=”ShowDisplay” value=”false”> |
: 이 부분은 플레이어 아래에 파일의 디스플레이 정보를 출력할 것인가 말것인가를 제어하는 부분입니다. true로 해 놓을 경우 아래에 쇼, 클립, 만든이, 저작권 등의 정보가 출력됩니다. |
<param name=”ShowTracker” value=”true”> |
: 재생 구간을 보여주는, 재생이 되면서 옆으로 움직이는 막대, 트랙커를 제어하는 기능입니다. 이 부분을 움직여서 원하는 부분만을 들을 수도 있지요. false로 지정시 트랙커가 사라집니다. |
<param name=”ShowStatusBar” value=”true”> |
: 플레이어 아래에 버퍼링과 남은시간/총시간 을 보여주는 한줄의 정보창을 제어하는 부분입니다. false로 해놓으면 보이지 않습니다. |
<param name=”EnableContextMenu” value=”true”> |
: 마우스 오른쪽 클릭시 나타나는 메뉴를 제어하는 기능입니다. false로 해놓으면 우측 클릭을 해도 등록정보 등이 있는 메뉴가 나타나지 않습니다. |
<param name=”ShowPositionControls” value=”true”> |
: 이 부분은 플레이어의 뒤로 가기(▶▶), 앞으로 가기(◀◀) 등의 버튼을 제어하는 부분입니다. false로 해놓으면 재생 버튼과 정지 버튼만 출력됩니다. |
<param name=”ShowCaptioning” value=”false”> |
: 동영상 등의 자막이 있을때 이를 제어하는 기능입니다. 음악 파일 재생시는 false로 해놓으시면 됩니다. |
<param name=”AutoRewind” value=”true”> |
: 재생이 끝났을 경우 이 부분을 true로 해놓으면 처음으로 돌아갑니다. false로 해 놓으면 끝부분에 머물러 있습니다. |
<param name=”PlayCount” value=”1″> |
: <embed>의 loop와 같은 기능으로 플레이 반복 횟수를 결정합니다. ‘-1’로 해놓으면 무한 반복 됩니다. |
<param name=”Volume” value=”0″> |
: 재생시 자동으로 설정할 볼륨 량을 지정해주는 부분입니다. 보기와 같이 0으로 해놓으면 최대 볼륨으로 재생됩니다. |
플래쉬나 동영상을 걸때 w3c Valid 띄우는법
<object width="425" height="350">
<param name="movie" value="http:// www.youtube.com/v/wzO3Q-HMUyM" ></param>
<embed src="http://www.youtube.com/v/ wzO3Q-HMUyM" type=" application/x-shockwave-flash" width="425" height="350"></ embed></object>
– UTUBE 기존 방식 –
<embed src='http://dory.mncast.com/ mncHMovie.swf?movieID= N200668132027' width='420'heig ht='374' allowScriptAccess=' never' type='application/x- shockwave-flash'></embed>
– MNCast 기존 방식 –
위와 같은 방법으로 W3C체크를 하게 되면 에러가 발생합니다.
embed 관련 에러가 쭉쭉 나오게 되죠…
embed 자체를 쓰지 않고 opject와 param만으로 플래쉬나 동영상을 걸 수 있습니다.
아래가 그 방법 입니다.
<object type="application/x-shockwave- flash" data="플래쉬주소" width=" 420"height="374"><param name="movie" value="플래쉬주소" />< param name="quality"value="best" />< param name="FlashVars" value=" playerMode=embedded" />죄송합니다 Flash를 사용할 수 없습니다.</object>
수정본 입니다. Flash 재생을 못하는 브라우져를 위해서 추가된 사항입니다.
<object type="application/x-shockwave- flash"data="http://dory. mncast.com/mncHMovie.swf? movieID=N200668132027" width=" 400"height="326" id=" VideoPlayback">
<param name="movie" value="http:// dory.mncast.com/mncHMovie.swf? movieID=N200668132027"/>
<param name="allowScriptAcess" value= "sameDomain" />
<param name="quality" value="best" />
<param name="bgcolor" value="#FFFFFF" />
<param name="scale" value="noScale" / >
<param name="salign" value="TL" />
<param name="FlashVars" value=" playerMode=embedded" />
</object>
이것은 플래쉬 용입니다.
<object type="video/x-ms-wmv"data="htt p://www.sarahsnotecards.com/ catalunyalive/fishstore.wmv" width="320"height="260">
<param name="src" value="http://www. sarahsnotecards.com/ catalunyalive/fishstore.wmv"/>
<param name="autostart" value="true" />
<param name="controller" value="true" />
</object>
이것은 wmv용입니다.
<object classid="clsid:02BF25D5-8C17- 4B23-BC80-D3488ABDDC6B"codebas e="http://www.apple.com/ qtactivex/qtplugin.cab" width= "320" height="260">
<param name="src" value="http://www. sarahsnotecards.com/ catalunyalive/diables.mov" />
<param name="controller" value="true" />
<param name="autoplay" value="false" />
<!--[if !IE]>-->
<object type="video/quicktime"data="ht tp://www.sarahsnotecards.com/ catalunyalive/diables.mov" width="320"height="260">
<param name="autoplay" value="false" />
param name="controller" value="true" />
</object>
<!--<![endif]-->
</object>
이것은 mov 파일용입니다.
위의 것들을 이용하면 avi나 mp3등등도 재생 할 수 있습니다.
.asf video/x-ms-asf
.avi video/x-msvideo
.mov video/quicktime
.mp3 audio/mpeg
.mpeg video/mpeg
.mpg video/mpeg
.wav audio/wav
[출처]