初心者の場合は、前の記事で紹介した手順を参照してこのコードを実行し、「災害」の到来を実感してください。
はい、ページが空白になっていることがわかります。また、Flash が表示できないときにバックアップの代わりに使用されていた画像もどこに消えたのでしょうか?デバッグ後、受信した Flash ファイルのアドレスが間違っている場合でも、間違った
タグが作成され、
[… … ]
がその中のコンテンツに置き換えられ、表示される内容は高さと幅がそれぞれ 304 ピクセルと 367 ピクセルの空白領域になります (Flash プレーヤーがインストールされている場合は、左上のマウスを右クリックします)画面の隅で何かが発見される)そして悪夢がやって来ます。
この悪夢のような結果を解決するために、まず、受信した Flash ファイルのアドレスに基づいてファイルがサーバー上に本当に存在するかどうかを確認するという悪いアイデアを思いつきました。ファイルが存在する場合、swfobject.embedSWF() メソッドを実行します。具体的なアイデアは、XMLHttpRequest オブジェクトを使用して GET/HEAD を通じてサーバーに要求し、xmlHttp.status == 200 || xmlHttp.status == 302 であることを確認することです。ファイルベースとして存在しますが、この方法にはまだいくつかの欠陥があるようで、まだ改善できていません。これが私の最終的な解決策の例です:
DEMO
(function( ) {
var xmlHttp,
result,
flashURL = "http://www.pec365.com/Flash/20071113.swf";
var checkFlashURL = function(url) {
xmlHttp = GetXmlHttpObject();
xmlHttp.onreadystatechange = function() {
if ( xmlHttp.readyState == 4 ) {
if ( xmlHttp.status == 200 ||
xmlHttp .status == 302 ) {
return (result = true);
}
}
};
xmlHttp.open("HEAD", url, true);
xmlHttp .send(null);
};
var GetXmlHttp = function() {
var xmlHttp = null;
// Firefox、Opera 8.0 , Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
// 古い IE
xmlHttp = new ActiveXObject ("Msxml2.XMLHTTP") ;
} catch (e) {
// 新しい IE
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
};
// 指定された Flash ファイルがサーバー上に存在するかどうかを確認するために使用されます
checkFlashURL(flashURL);
window.onload = function() {
if ( result ) {
swfobject.embedSWF(flashURL, "flashcontent", "304", "367", "10.0.0", "expressInstall.swf", {}, {quality:"autohigh", wmode:"transparent" }, {} );
}
else {
window.alert("フラッシュ アドレスが無効です。慎重に確認してください"); // フラッシュ アドレスが無効であるかどうかを確認するために使用されます。デバッグ中は正しいです
}
}
})();
< ;div id="flashcontent">
うわー、この 2 つのテキストを捨てるのに数時間かかりました。うっかり最後まで会社に残ってしまった 22時になったので、急いで終わらせたいのですが、明日仕事で時間ができたら文字を彫ります(笑)。