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でオブザーバーモードを実装する方法を教えます

推薦する

LeetCode の SQL 実装 (178. スコアランキング)

[LeetCode] 178.ランクスコアスコアをランク付けする SQL クエリを記述します。2 ...

Tomcat の静的ページ (html) で中国語の文字化けが発生する問題の究極の解決策

tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...

HTML タイトル属性をラップする方法

数日前にプログラムを書いていたとき、プロンプト情報 (TITLE) を新しい行で囲みたいと思いました...

docker に基づいて nginxssl 設定を開始する

前提条件クラウドサーバー(Alibaba Cloud、Tencent CloudなどのcentOS)...

HTMLでマスクレイヤーを実装する方法 HTMLでマスクレイヤーを使用する方法

Web ページでマスク レイヤーを使用すると、繰り返しの操作を防ぎ、読み込みを促進できます。また、ポ...

MySQL トリガーの使用方法と利点と欠点の紹介

目次序文1. トリガーの概要2. トリガーの作成2.1 トリガー構文の作成2.2 コード例3. トリ...

Centos 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar の簡単な分析

Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...

v-model 双方向バインディングデータを実装する vue カスタム コンポーネントのサンプル コード

プロジェクトでは、プロジェクトが呼び出すカスタム パブリック コンポーネントに遭遇します。通常、pr...

ubuntu20.04 LTS システムのデフォルト ソース ソース リスト ファイルの変更

誤って source.list の内容を変更し、一連のエラーが発生した場合は、デフォルトのソース フ...

Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...

Dockerコンテナ間で通信する3つの方法

Docker コンテナは互いに分離されており、相互にアクセスできないことは誰もが知っていますが、依存...

LinuxでRPMを使用してmysql5.7.17をインストールする

LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

MySQLはパスワードなしでログインする例を実装しています

具体的な方法:ステップ1: mysqlサービスを停止する /etc/init.d/mysqld を停...

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...