はじめに
私がこの記事を書いた主な理由は、チーム リーダーによって提起された新しい要件のためです? ブラウザを使用してコンピュータのカメラを呼び出し、瞬時に写真を撮る機能を実現します。インターネットでさまざまな情報を調べましたが、最終的には何らかの理由で、Flash プラグインを使用して PC のカメラを呼び出すことにしました。もちろん、この要件は B/S アーキテクチャに基づいているため、フロントエンドの HTML ページにどのように埋め込むかを考えています。
もちろん、ここでは主に実装のためのカプセル化は考慮されておらず、その後の作業は業務に応じて抽象化され、共通コンポーネントにカプセル化されます。さて、早速、重要なポイントに焦点を当ててみましょう。
コード表示
<span style="font-family:Microsoft YaHei;"><div 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></div></span>
このメソッドは Object を使用しますおよび Emb ed タグでは、多くのパラメータと embed の多くの属性が表示されます。繰り返した。ブラウザの互換性。一部のブラウザはオブジェクトをサポートし、一部のブラウザは埋め込みをサポートします。そのため、Flash パラメータを変更する場合は両方の場所を変更する必要があります。この方法は常に Macromedia の公式方法であり、互換性の問題を発生させることなく Flash の機能を最大限に保証します。
しかし、今見てみると、まだ大きな問題を抱えています。
まず、互換性のために埋め込まれたembedタグがW3Cの仕様に準拠していないため検証を通過できません。もちろん、ルールや規制を気にしないのであれば、それは別の問題です。
次に、さまざまな理由により、Microsoft は sp2 以降、IE の ActiveX の使用モードを制限しました。つまり、ページ上の ActiveX には仮想ボックスがあり、通常の操作にはユーザーが 1 回クリックする必要があります。 Flash は ActiveX として Web ページに埋め込まれているため、JS を介して Flash を埋め込むことのみがこの問題の影響を受けます。
繰り返しになりますが、ブラウザの Flash プラグインのバージョンが不十分な場合、または swf ファイルが正常に表示されない場合、または ActiveX のインストールを確認するボックスが表示されます。非常に怖いので、多くのユーザーには適していません。
コード表示
<span style="font-family:Microsoft YaHei;"><div 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></div></span>
このメソッドはObjectタグのみを使用します。ああ。 embed タグがないので、標準的な Flash 埋め込み方法であり、ほぼ完璧に見えますが、まだ問題があります。
まず、IE でストリーム機能を確保するために、ターゲット swf をロードするためのホルダー swf が必要です。flashvars 経由でパラメータを渡したり、ページの JS を操作したりする必要がある場合、非常に面倒になります。
次に、最初の方法と同様に、バージョン検出なしで ActiveX プロンプト ボックスがポップアップ表示されます。
繰り返しになりますが、一部の下位バージョンのブラウザ (Safari の下位バージョンなど) はこの方法に同意せず、互換性が低くなります。
コード表示
<span style="font-family:Microsoft YaHei;"><div 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"></div></span>
このメソッドは Emb のみを使用しますed タグ、効果と比較すると、まだ非常に優れています、ブラウザ互換性もかなり良く、何でも読み込めます。もちろん、embed タグは W3C 仕様に準拠していないため、この方法は推奨されません。
首先,你需要下载一个 SWFObject 插件包,该插件包中包含一个 JS 脚本,这个是你需要引入的脚步文件。还包括两个 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;"><div 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]--> <div> <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> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object></div></span>
对比这几种方式,我更推荐使用 JS 嵌入的方式来加载 Flash 插件,这种方式不仅能保证实现 Flash 的所有功能,同时在各浏览器的兼容性方面也都表现不错,并且 JS 还可以提供更多的扩展功能,更主要是可以被更多的人复用,减少不必要的冗余代码。
插件下载地址:SWFObject