Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

플래시나 동영상 자동 실행하기

MS가 재판에서 진 이후 IE에서 플래시나 동영상 즉 embed나 object태그를 사용할 때 로딩시 바로 실행되지 않고 테두리가 생기고 클릭을 해주어야 실행되도록 바뀌었다.

이는 머 개발자들의 잘못은 아니지만 어쨌든 UI적인 측면에서는 상당히 불편한 부분으로 이를 해결하는 것은 개발자들의 몫이다.

가장 간단한 방법은 document.write를 사용하는 방법으로 가장 간단하면서 여태 이런 방법으로 해결했었다.

일단 별도의 js파일을 만든다.

function autoactive() {
    document.write(" <embed src="파일경로">")
}

플래시등이 삽입되는 파일에는 아래 소스를 넣어주면 된다.

<script language=JavaScript src="active.js"></script>

<script language=javascript>autoactive();</script>

첫줄에서 파일을 인클루드 하고 플래시등을 보여줄 곳에 두번째소스를 넣어주면 된다.

-------------------------------------------------------------------------------------

이렇게 하면 테두리가 생기지 않고 자동으로 생성된다. 물론 document.write는 여러줄을 쓸수 있고 간단한 소스라면 js를 따로 만들지 않고 바로 자바스크립트로 document.write를 해주어도 된다.

근데 이거 생각보다 귀찮다. 머 간단한거는 바로 만들면 되기는 하지만 파일이 자주 있거나 할때등에는 별도의 js파일을 생성하거나 수정하는 등 계속 만져주어야 하기 때문에 불편하다.

그러다가 더 좋은 방법을 알게 되었다. 머 선택은 각자의 마음이지만...

다음과 같은 파일을 만든다.


// forActiveX.asp
<%
    'ActiveX를 둘러 쌓고 있는 Textarea의 ID (각 페이지에서 get방식으로 넘긴다.) 
    id = request.querystring("id") 
    spanID = "span" & id
%>

    document.write("<span id='<%=spanID%>'></span>");
    document.getElementById('<%=spanID%>').innerHTML=document.getElementById('<%=id%>').value;

위의 파일이 자동실행이 가능하도록 만들어 주는 파일이다.

위는 aps파일이므로 당연히 다른 언어에서는 그에 맞게 만들어 주어야 할것이다. 그냥 겟방식으로 textarea의 아이디를 넘겨주고 그걸 받아서 span에 붙혀준것 뿐이다. jsp나 php에서는 그에 맞게...



그럼 플래시나 동영상을 실행해야 하는 파일에서 원하는 위치에 다음소스를 입력한다.


<!-- 개체를 입력할 파일 -->
<textarea id="forActiveX" style="display:none;" rows="0" cols="0">
    <embed src="어쩌구저쩌구">
</textarea> 

<script language="javascript" src="forActiveX.asp?id=forActiveX"></script>

원하는 embed나 object 태그를 보이지 않는 textarea태그로 묶어주고 그 바로 아래에서 위에서 만든 forActiveX.asp파일에 get방식으로 textarea의 id를 넘겨준다.(id가 꼭 forActiveX일 필요는 없다.)

이렇게 하면 페이지 로딩시 테두리가 생기지 않고 바로 실행되는 걸 볼 수 있다.

이런 방식으로 했을때의 이점은 플래시나 동영상을 사용할 때 일일이 만들어 주지 않고 위의 코드를 copy & paste 만 해서 계속 사용할 수 있다는 점이다.

2007/09/16 01:56 2007/09/16 01:56

prototype.js에서 $F()사용시

요즘 prototype.js에 좀 빠져들어 볼라고 하고 있다. 내가 빠져들기에는 너무 어려운 부분이 많아서.. ㅡ..ㅡ

어쨌든 이녀석을 제대로 사용하면 유용함은 거의 무궁무진할 것 같다.

어쨌던 prototype.js에서 $F("엘레먼트ID")를 하면 엘레먼트의 value를 가져올 수 있다.

document.폼네임.엘레먼트이름으로 하거나 ElementById를 사용하지 않아도 아주 편하다.

하지만 $F()는 getValue이기 때문에 값을 가져올 수는 있지만 값을 할당할 수는 없다.

ElementByID("엘레먼트ID").value하고는 다르다는 얘기다..

그래서 값을 할당하려면

$("엘레먼트ID").value = "test";

의 형식으로 사용해야만 가능하다. 생각해 본다면 당연한 얘기긴 하지만 쓸때는 좀 헷갈리기 때문에.. ㅎ
2007/09/16 00:56 2007/09/16 00:56