SWFObjectを使用すると、HTMLにFlashを挿入する際のブラウザ互換性の問題を完全に解決できます。

SWFObjectを使用すると、HTMLにFlashを挿入する際のブラウザ互換性の問題を完全に解決できます。

一緒に学びましょう

1. 伝統的な方法


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

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="<a href="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0</a>" width="550" height="400" id="Untitled-1" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="mymovie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="mymovie.swf" quality="high" bgcolor="#ffffff" width="550" height="400"name="mymovie" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="<a href="http://www.macromedia.com/go/getflashplayer">http://www.macromedia.com/go/getflashplayer</a>" />
</オブジェクト>

この方法では、オブジェクト タグと埋め込みタグを使用して埋め込みます。注意して見ると、オブジェクトの多くのパラメータと埋め込み内の多くの属性が繰り返されていることがわかります。なぜこのようなことが行われるのでしょうか。ブラウザの互換性のため、一部のブラウザはオブジェクトをサポートし、一部のブラウザは埋め込みをサポートしています。そのため、Flash パラメータを変更するときは、両方の場所を変更する必要があります。

この方法は Macromedia の公式方法であり、Flash の機能性が最大限に保証され、互換性の問題もありません。しかし、今のところうまく動作しません。互換性のために埋め込まれた埋め込みタグが W3C 仕様に準拠していないため、検証に失敗します。もちろん、標準を気にしないかどうかは別の問題です。

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

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

2. JSで埋め込む方法

JS で埋め込む場合、さまざまな埋め込み方法があり、適切なものもあれば、そうでないものもあります。直接書き込むために document.write を使用する人もいます。正直、この方法はあまり良くありません。ハック要素が多すぎて、検証のための検証のような気がします。また、JS の利点も反映されていません。良い JS 埋め込みスクリプトは、Flash が持つべき機能を確保しながら、JS の利点を最大限に発揮できるものでなければならないと思います。バージョン検出機能があり、アクセシビリティの問題 (つまり、ユーザーが Flash コンテンツを参照できない場合や JS を無効にできない場合の対処方法) をうまく解決でき、再利用が容易である必要があります。

ここで説明するのは、SWFObject ソリューションです。

「SWFObject」は、Javascript を使用してフラッシュを挿入します。これには多くの利点があります。コードは簡潔で、IE6 では「コントロールをアクティブにするには、ここをクリックしてください」というプロンプトが表示されず、W3C 検証に合格できます。フラッシュに「オブジェクト」を挿入する従来の方法とは異なります。

SWFObject の新しい 2.x バージョンでは、最も単純な呼び出しに必要なのは 1 つの文だけであり、ページが読み込まれるのを待つ必要がないため、この文をページ上のどこにでも記述できます。以前のバージョンよりもずっとシンプルです。以下に、シンプルでよく使用される呼び出し方法をいくつか示します。

1. フラッシュを挿入したいときにいつでも使用できる、最もシンプルで基本的な定番の文章。


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

<div id="swfid"></div>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("test.swf", "swfid", "300", "120", "9.0.0", "expressInstall.swf");
</スクリプト>

注: SWF ファイルを挿入するには、embedSWF メソッドを呼び出します。パラメータは次のとおりです: @swf ファイルのアドレス。@swf ファイルを読み込むために使用されるコンテナー (div など) の ID。@フラッシュの幅。@フラッシュの高さ (もちろん、ここでの幅と高さは 100% などのパーセンテージで表すことができます)。@フラッシュを正常に再生するために必要な最小バージョン。@バージョンが要件より低い場合は、swf ファイルを実行します。ここでは、このフラッシュを使用して、最新バージョンのフラッシュ プラグインの公式ダウンロードにジャンプします。 (このパラメータは省略できます) 同じページ上の異なる場所に複数のフラッシュを挿入する場合は、上記のステートメントを繰り返し、異なるコンテナ ID を使用します。

2. パラメータ、変数、プロパティをswfファイルに渡すメソッドの呼び出し


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

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
//1. Jsonを使用して変数、パラメータ、プロパティを初期化する
var フラッシュ変数 = {
名前1: 「こんにちは」
名前2: "世界",
名前3: "foobar"
};
var パラメータ = {
メニュー: "false"
};
var 属性 = {
id: "dynamicContent2"、
名前: "dynamicContent2"
};
swfobject.embedSWF("test6_flashvars.swf", "content2", "300", "120", "6.0.0","expressInstall.swf", flashvars, params, attribute); </p> <p>//2. 従来の初期化設定、効果は同じです
var フラッシュ変数 = {};
flashvars.name1 = "こんにちは";
flashvars.name2 = "ワールド";
flashvars.name3 = "foobar";
var パラメータ = {};
パラメータ.menu = "false";
var 属性 = {};
属性ID = "dynamicContent3";
属性名 = "dynamicContent3";
swfobject.embedSWF("test6_flashvars.swf", "content3", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attribute);
//3. 最後に、1文だけで簡潔かつ力強く、先延ばしせずに直接書きます。
swfobject.embedSWF("test6_flashvars.swf", "content5", "300", "120", "6.0.0","expressInstall.swf", {name1:"hello",name2:"world",name3:"foobar"}, {menu:"false"}, {id:"dynamicContent5",name:"dynamicContent5"});
</スクリプト>

SWFObject 2.0 公式ドキュメント (中国語) https://www.jb51.net/books/175630.html

github: https://github.com/swfobject/swfobject .

<<:  CSSの4種類の配置の違いの詳細な説明

>>:  Javascriptでオブザーバーモードを実装する方法を教えます

推薦する

...

MySql で、存在しない場合は挿入し、存在する場合は更新する方法

まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...

JavaScript でツリー構造を構築するための効率的なアルゴリズムについての簡単な説明

目次導入アイデアID配列インデックスのマッピング関係を確立するツリー構造の構築原理要約する導入組織階...

Linux スレッド間の同期と排他制御の知識ポイントのまとめ

スレッドが同時に実行される場合、スレッドがリソースを競合してデータの曖昧さが生じるのを防ぐために、重...

Docker を使用して Spring Boot をデプロイする方法の例

ここでは主に、スタンドアロンのプログラムを生成できるspring-bootと、Mavenプラグインd...

MySQL の挿入ステートメントの使用実体験

目次1. 挿入のいくつかの構文1-1. 通常の挿入文1-2. 挿入または更新1-3. 挿入または交換...

JavaScript データ型の詳細な説明

目次1. リテラル1.1 数値リテラル1.2 浮動小数点リテラル1.3 特別な値1.4 文字列リテラ...

MySQLデータベースの基本構文と操作

MySQLデータベースの基本構文DDL操作データベース作成構文: create database デ...

n 個のコンテナ要素による無限スクロールの実装コード

シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...

MySQLデータベースを作成し、中国語の文字をサポートする方法

まずMySQLの公式ドキュメントを見てみましょう: 5.7 {データベース | スキーマ} を作成 ...

VueにおけるAxios非同期通信の詳細な説明

1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...

JSONP クロスドメインシミュレーション Baidu 検索

目次1. JSONPとは何か2. JSONPクロスドメインリクエスト3. Baidu検索をシミュレー...

Navicat Premium が MySQL 8.0 に接続してエラー「1251」を報告する問題を解決する方法の分析

長い間何もしていなかった人は、努力をすると一生懸命働いていると思うようになります。 1. 問題Nav...