제가 이 글을 쓴 이유는 주로 팀 리더가 제기한 새로운 요구 사항 때문입니다. 브라우저를 사용하여 컴퓨터의 카메라를 호출하여 즉시 사진을 찍는 기능을 구현하라는 것입니다. 인터넷에서 많은 정보를 확인하다가 이런저런 이유로 결국 PC의 카메라를 호출하기 위해 플래시 플러그인을 사용하기로 결정했습니다. 물론 이 요구 사항은 B/S 아키텍처를 기반으로 하기 때문에 프런트엔드 HTML 페이지에 어떻게 삽입할지 고민 중입니다.
여담
물론 여기서는 encapsulation을 고려하지 않았습니다. 주로 구현을 먼저 하고 후속 작업은 업무에 따라 추상화하여 일반으로 encapsulation합니다. 구성 요소. 좋습니다. 더 이상 고민하지 말고 핵심 사항에 집중하겠습니다.
삽입 플러그인
객체 및 삽입 태그 사용
코드 표시
<span style="font-family:Microsoft YaHei;"><p style="margin-top:-30px;margin-left:-120px;"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="490" height="390" id="Untitled-1" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="cam.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="cam.swf" quality="high" bgcolor="#ffffff" width="490" height="390" name="cam" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </p></span>
Object 및 Embed 태그를 사용하는 방법으로 object의 여러 매개변수와 embed의 여러 속성이 반복되는 것을 볼 수 있습니다. 브라우저 호환성, 일부 브라우저는 객체 지원, 일부는 삽입 지원을 지원하므로 Flash 매개변수를 수정하려는 경우 두 위치를 모두 변경해야 합니다. 이 방법은 호환성 문제 없이 Flash의 기능을 최대한 보장하는 Macromedia의 공식 방법이었습니다.
그런데 지금 보면 여전히 문제가 크다.
우선 호환성을 위해 삽입한 embed 태그가 W3C 규격을 준수하지 않아 검증에 실패합니다. 물론 규칙이나 규정에 관심이 없다면 그것은 또 다른 문제입니다.
둘째, 여러 가지 이유로 Microsoft는 sp2 이후 IE의 ActiveX 사용 모드를 제한했습니다. 즉, 페이지의 ActiveX에 가상 상자가 있어 사용자가 정상적인 상호 작용을 위해 한 번 클릭해야 합니다. . Flash는 웹 페이지에 ActiveX로 포함되어 있으므로 JS를 통해 Flash를 포함해야만 이 문제를 해결할 수 있습니다.
또한 플래시 버전 감지가 되지 않습니다. 브라우저의 플래시 플러그인 버전이 부족하거나, swf 파일이 정상적으로 표시되지 않거나, ActiveX 설치 확인 상자가 나타나는 경우 - 이 상자가 나타납니다. 많은 사용자에게 짜증나는 말입니다.
객체 태그만 사용
코드 표시
<span style="font-family:Microsoft YaHei;"><p style="margin-top:-30px;margin-left:-120px;"> <object type="application/x-shockwave-flash data="c.swf?path=cam.swf" width="490" height="390"> <param name="cam" value="c.swf?path=cam.swf" /> <img src="defqr.png" width="550" height="400" alt="" /> </object> </p></span>
이 방법은 실제로 Flash인 객체 태그만 사용합니다. 사테. Embed 태그가 없기 때문에 검증을 통과할 수 있습니다. Flash를 삽입하는 표준 방법입니다. 브라우저 호환성도 거의 완벽해 보이지만 여전히 문제가 있습니다.
먼저 IE에서 스트림 기능을 보장하려면 대상 SWF를 로드하기 위한 홀더 SWF가 필요합니다. 귀찮은.
둘째, 첫 번째 방법과 마찬가지로 버전 감지 없이 ActiveX 프롬프트 상자가 나타납니다.
또한 일부 하위 버전의 브라우저(예: Safari 하위 버전 등)에서는 이 방법에 동의하지 않으며 호환성이 좋지 않습니다.
embed 태그만 사용
코드 표시
<span style="font-family:Microsoft YaHei;"><p style="margin-top:0px;margin-left:-70px;"> <embed id="cam" src="cam.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="450" height="350" name="webcam" align="middle" wmode="transparent" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="width=490&height=390&objid=cameradialog"> </p></span>
이 방법은 비교 측면에서 Embed 태그만 사용합니다. 효과는 여전히 매우 좋으며 브라우저 호환성도 좋고 로드할 수 있습니다. 물론, embed 태그는 W3C 규격을 따르지 않으므로 이 방법은 권장되지 않습니다.
먼저 JS 스크립트가 포함된 SWFObject 플러그인 패키지를 다운로드해야 합니다. 이것이 가져와야 하는 스크립트 파일입니다. 또한 모방할 수 있는 두 개의 HTML 예제도 포함되어 있습니다. 물론 SWFObject 웹사이트로 이동하여 자세한 내용을 알아볼 수도 있습니다. 코드 표시
<span style="font-family:Microsoft YaHei;"><script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> swfobject.registerObject("myId", "9.0.0", "cam.swf"); </script></span>
<span style="font-family:Microsoft YaHei;"><p style="margin-top:-30px;margin-left:-120px;"> <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="490" height="390"> <param name="movie" value="cam.swf" /> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="cam.swf" width="490" height="390"> <!--<![endif]--> <p> <h1>Alternative content</h1> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p> </p> <!--[if !IE]>--> </object> <!--<![endif]--> </object> </p></span>
결론 비교하세요 저는 Flash 플러그인을 로드할 때 JS 임베딩 방식을 선호합니다. 이 방식은 Flash의 모든 기능 구현을 보장할 뿐만 아니라 다양한 브라우저와의 호환성 측면에서도 좋은 성능을 발휘하며 JS에서도 제공할 수 있습니다. more 확장된 기능은 더 많은 사람들이 재사용할 수 있고 불필요한 중복 코드를 줄일 수 있습니다.
PC의 카메라를 호출하는 더 많은 플래시 플러그인과 이를 TML 페이지에 삽입하는 방법에 대해서는 PHP 중국어 웹사이트에서 관련 기사를 참고하세요!