フラッシュプラグインを使用して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 ソースコードを使用したエンタープライズレベルのインストールチュートリアル

推薦する

React 手書きタブ切り替え問題

親ファイル React をインポートし、{useState} を 'react' か...

フォント名に従ってフォントを呼び出すと、ブラウザに必要なフォントが表示されます。

質問 1: ブラウザに必要なフォントを表示するように指示するにはどうすればよいでしょうか? フォント...

ウェブ理論: 考えさせない読書ノート

第 1 章<br /> Web ページをユーザーにとって使いやすいものにするための最も重...

win10 での mysql5.7.21 の詳細なインストール手順

この記事では、MySQL 5.7.21のインストールとインストール中に発生した問題を参考までに紹介し...

MySQLのMERGEストレージエンジンの詳細な説明

MERGE ストレージ エンジンは、MyISAM テーブルのグループを論理ユニットとして扱い、同時に...

Web デザイン スキル: iframe の適応高さの問題

おそらく、この問題にまだ遭遇していない人もいるでしょうから、まずは適応高さとは何かを説明しましょう。...

bodyタグの主な属性の概要

bgcolor="テキストの色" background="背景画像&q...

Docker コマンドラインの完全ガイド (知っておくべき 18 のこと)

序文Docker イメージは Dockerfile といくつかの必要な依存関係で構成され、Docke...

VMWare仮想マシンのcentosの時間が現地時間と矛盾する問題を解決する

VM Ware 仮想マシン CentOS の時刻は、次の図に示すように、現地時間と一致しません。おそ...

Bootstrap 3.0 学習ノートボタンスタイル

この記事では主にボタンのスタイルについて説明します。 1. オプション2. サイズ3. 活動状況4....

MySQLのSQLモードの特徴のまとめ

序文SQL モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響...

docker-composeの詳細なインストールと使用方法

Docker Compose は、複雑なアプリケーションを定義および実行するための Docker ツ...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

MySQLのよくある間違い

NULL 値によると、MySQL の NULL 値は単にデータがないことを意味します。NULL 値は...

myBatis で条件を削除する際のスプライシング問題を解決する

私は今日、mybatis を学び、データベースに対していくつかの簡単な追加、削除、変更、クエリを実行...