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

推薦する

Tomcat 例外の解決方法 (リクエスト ターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています)

1. シナリオ表示Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか...

ウェブページで CSS スタイルを適用するさまざまな形式の概要

1. インライン スタイル (<body></body> 内に配置されます)...

mysql+mycat、負荷分散、マスタースレーブレプリケーション、読み取り/書き込み分離操作に基づく安定した高可用性クラスタを構築します。

データベースのパフォーマンス最適化には、一般的にクラスタリングが採用されています。Oracle クラ...

CentOS 8 仮想マシンから Windows 10 ホスト フォルダーにアクセスする方法の簡単な分析

VMware Toolsをインストールすると、仮想マシンホスト間で①テキストをコピーして貼り付けるこ...

MySQLを5.7にアップグレードすると、WordPressはデータをインポートするときにエラー1067を報告します

最近MySQLを5.7にアップグレードしましたが、WordPressでデータのインポート時にエラーが...

MySQL シリーズ: redo ログ、undo ログ、binlog の詳細な説明

取引の実施REDO ログはトランザクションの永続性を保証し、UNDO ログはトランザクションのロール...

MySQL でデータを削除してもテーブル ファイルのサイズが変更されないのはなぜですか?

長期間稼働しているデータベースの場合、テーブルがストレージ領域を占有しすぎるという問題がよく発生しま...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

docker cp ファイルをコピーしてコンテナに入る

実行中のコンテナに入る # コンテナに入り、新しいターミナルを開きます# docker exec -...

CSSアニメーションによるテーブルスクロールカルーセル効果の実装

前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...

Ubuntu 18.04 での Pycharm インストール チュートリアルの実装

方法1: Pycharmをダウンロードしてインストールするダウンロードアドレス: https://w...

CSSポジショニングによる階層関係の問題の詳細な説明

絶対、相対、固定位置の位置決めabsolue: 絶対配置。上、下、左、右を使用して、配置先の親要素に...

WHMCS V7.4.2 グラフィカル インストール チュートリアル

1. はじめにWHMCS は、ユーザー管理、請求書の支払い、ヘルプ サービスなど、オンライン ビジネ...

忘れられたMySQLパスワードとログインエラーの問題について簡単に説明します

MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...

Vueでアイコンをカスタマイズする手順

ant-design-vue は Ali iconfont icons の使用をカスタマイズします\...