フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法

フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法
序文

この記事を書いた主な理由は、チームリーダーが、ブラウザを使用してコンピューターのカメラを呼び出してインスタント写真撮影機能を実現するという新しい要件を提示したためです。インターネットでいろいろ情報を調べ、いろいろな理由から、最終的にはフラッシュプラグインを使ってPCのカメラを呼び出すことにしました。もちろん、この要件は B/S アーキテクチャに基づいているため、フロントエンドの HTML ページに埋め込む方法を検討していました。

話題外

もちろん、ここではカプセル化は考慮されていません。まずは実装が主目的であり、その後の作業は業務に応じて抽象化され、共通コンポーネントにカプセル化されます。さて、ナンセンスは十分です、本題に入りましょう。

プラグインを埋め込む

オブジェクトタグと埋め込みタグの使用

コードショーケース

コードをコピー
コードは次のとおりです。

<span style="font-family:Microsoft YaHei;"><div style="margin-top:-30px;margin-left:-120px;">
<オブジェクトクラスid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
コードベース="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
幅="490" 高さ="390" id="無題-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" プラグインページ="http://www.macromedia.com/go/getflashplayer" />
</オブジェクト>
</div></span>

このメソッドでは、Object タグと Embed タグを使用します。オブジェクトの多くのパラメータと埋め込みの多くの属性が繰り返されていることがわかります。ブラウザの互換性: 一部のブラウザはオブジェクトをサポートし、一部のブラウザは埋め込みをサポートしています。そのため、Flash パラメータを変更するときは、両方の場所を変更する必要があります。この方法は Macromedia の公式方法であり、Flash の機能性が最大限に保証され、互換性の問題もありません。

しかし、今のところまだ大きな問題があるようです。

まず、互換性のために埋め込まれた埋め込みタグが W3C 仕様に準拠していないため、検証に合格できません。もちろん、標準を気にしないかどうかは別の問題です。

第二に、さまざまな理由により、Microsoft は SP2 以降、IE の ActiveX の使用モードを制限しました。つまり、ページ上の ActiveX に仮想ボックスがあり、ユーザーは正常に操作するために 1 回クリックする必要があります。 Flash は ActiveX として Web ページに埋め込まれているため、これも関係します。この問題は、JS を介して Flash を埋め込むことによってのみ解決できます。

繰り返しになりますが、Flash バージョンの検出はありません。ブラウザの Flash プラグイン バージョンが十分でない場合、swf ファイルが正常に表示されないか、ActiveX のインストール確認ボックスがポップアップ表示されることがあります。このボックスは多くのユーザーにとって非常に恐ろしいものです。

オブジェクトタグのみを使用する

コードショーケース

コードをコピー
コードは次のとおりです。

<span style="font-family:Microsoft YaHei;"><div style="margin-top:-30px;margin-left:-120px;">
<オブジェクトタイプ="application/x-shockwave-flash データ="c.swf?path=cam.swf" 幅="490" 高さ="390">
<param name="cam" value="c.swf?path=cam.swf" />
<img src="defqr.png"
幅="550" 高さ="400" alt="" />
</オブジェクト>
</div></span>

この方法では、実際には Flash satay である Object タグのみを使用します。埋め込みタグがないので検証を通過できます。Flashを埋め込む標準的な方法です。ブラウザの互換性も良好です。ほぼ完璧のように見えますが、まだ問題があります。

まず、IE でのストリーム機能を確保するには、ターゲット SWF をロードするためのホルダー SWF が必要です。フラッシュ変数を介してパラメータを渡したり、ページの 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>

この方法はEmbedタグのみを使用します。効果を比較すると、それでも非常に優れています。ブラウザの互換性も良好で、読み込むことができます。もちろん、埋め込みタグは W3C 仕様に準拠していないため、この方法は推奨されません。

JavaScriptを使用して埋め込む

JS を使用してインターネット上で Flash プラグインを読み込む方法は多数あり、選択できる優れた JS プラグインも多数あります。ここでは SWFObject について簡単に紹介します。

まず、インポートする必要があるスクリプト ファイルである JS スクリプトを含む SWFObject プラグイン パッケージをダウンロードする必要があります。また、模倣できる 2 つの HTML サンプルも含まれています。もちろん、SWFObject の Web サイトにアクセスして詳細を確認することもできます。ここをクリックしてください。

コードショーケース

コードをコピー
コードは次のとおりです。

<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;">
<オブジェクト id="myId" クラス id="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 幅="490" 高さ="390">
<param name="movie" value="cam.swf" />
<!--[if !IE]>-->
<オブジェクトタイプ="application/x-shockwave-flash" データ="cam.swf" 幅="490" 高さ="390">
<!--<![endif]-->
<div>
<h1>代替コンテンツ</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="Adobe Flash Player を入手" /></a></p>
</div>
<!--[if !IE]>-->
</オブジェクト>
<!--<![endif]-->
</オブジェクト>
</div></span>

レンダリング

結論<br />これらの方法と比較して、Flash プラグインをロードするには JS 埋め込みを使用することをお勧めします。この方法は、Flash のすべての機能の実現を保証するだけでなく、さまざまなブラウザとの互換性の点でも優れています。JS はより多くの拡張機能を提供することもできますが、さらに重要なのは、より多くの人が再利用できるため、不要な冗長コードが削減されることです。

プラグインのダウンロードアドレス: SWFObject

<<:  JavaScript データのフラット化の詳細な説明

>>:  LAMP ソースコードを使用したエンタープライズレベルのインストールチュートリアル

推薦する

MySQL 8.0 Windows zip パッケージ版の詳細なインストール手順

MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...

RGBA の「a」は何を意味するのでしょうか? CSS RGBA カラー ガイド

RGBAは色の値と透明度を設定できるCSSカラーです以下は、rgba() を使用して白色を 50% ...

CSS はモバイル デバイスで水平スクロール ナビゲーション バーを実装します (PC デバイスにも適用可能)

関数の起源最近、水平スクロール バーを必要とする H5 に取り組んでいました。いくつかのドキュメント...

Centos 7.4 サーバーの時刻同期設定方法 [NTP サービスに基づく]

この記事では、CentOS 7.4 サーバーで時刻同期を構成する方法について説明します。ご参考までに...

XHTML コードで Marquee タグを使用する方法

フォーラムで、ネットユーザーの jeanjean20 が、Marquee を標準に適合させる方法につ...

Centos での Python のアップグレードと Mongodb ドライバーのインストールに関する問題

Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...

MySQLインデックスの基本構文

インデックスはソートされたデータ構造です。 where 条件での検索や order by 条件での並...

Tomcat での jar のロードに関する異常な問題の分析と解決

現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...

innodb_flush_method 値メソッド (例の説明)

innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

Docker イメージのエクスポート、インポート、コピーの例の分析

最初の解決策は、イメージを公開イメージリポジトリにプッシュし、それをプルダウンすることです。 2 番...

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

WeChatアプレット学習ノート: ページ構成とルーティング

最近、小さなプログラムの開発を勉強して見直しており、学習結果のいくつかをメモしています。公式の We...

Navicat の MySQL へのリモート接続の実装手順の分析

序文皆さんはリモート サーバーで開発を行っており、MySQL の使用率はかなり高いはずです。コマンド...