flash嵌入html 在html網(wǎng)頁代碼中嵌入Flash文件的解決方案(下)
來源:易賢網(wǎng) 閱讀:1052 次 日期:2016-06-21 14:14:19
溫馨提示:易賢網(wǎng)小編為您整理了“flash嵌入html 在html網(wǎng)頁代碼中嵌入Flash文件的解決方案(下)”,方便廣大網(wǎng)友查閱!

在HTML代碼中嵌入Flash文件一直都是廣大web愛好者所所喜歡挑戰(zhàn)的事,也算不上什么挑戰(zhàn)(對于新手朋友來說吧)好了,閑話不多說,切入正題

關于我的SWFObject V1.5的使用過程,以上篇中的介紹暫時告一段落了,下面我將會帶領SWFObject V2.1出場與大家見面,如果我早一點結識V2.1的話,或許就不會受到“等待HTML DOM加載”問題的侵擾了。

首先,給大家簡要介紹一下V2.1語法的調用示例:

代碼如下:

<script type="text/javascript" src="swfobject.js"></script>

<script type="text/javascript">

//1、使用Json初始化變量、參數(shù)、屬性

var flashvars = {

name1: "hello",

name2: "world",

name3: "foobar"

};

var params = {

menu: "false"

};

var attributes = {

id: "dynamicContent2",

name: "dynamicContent2"

};

swfobject.embedSWF("test6_flashvars.swf", "content2", "300", "120", "6.0.0", "expressInstall.swf", flashvars, params, attributes);

//2、傳統(tǒng)的初始化設置,效果一樣

var flashvars = {};

flashvars.name1 = "hello";

flashvars.name2 = "world";

flashvars.name3 = "foobar";

var params = {};

params.menu = "false";

var attributes = {};

attributes.id = "dynamicContent3";

attributes.name = "dynamicContent3";

swfobject.embedSWF("test6_flashvars.swf", "content3", "300", "120", "6.0.0",

"expressInstall.swf", flashvars, params, attributes);

//3、直接寫在后面,就一句話,簡潔剽悍,不拖泥帶水

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"});

</script>

從我個人來講,我比較喜歡上面的第三種寫法,下面即將提到,我在HTML代碼中嵌入Flash文件的最終解決方案中,就是采取的第三種風格調用的swfobject.embedSWF()。V2.1版本的風格非常符合現(xiàn)代JS的風格,代碼顯得更為簡潔。

上篇中采取的解決方案看來,似乎已經(jīng)能夠滿足大部分需求,而且兼容性似乎也還過得去,理應能夠滿足絕多數(shù)朋友的需求,也未嘗不可是一個過得去的解決方案。但是,有一種比較極端的情況被我發(fā)現(xiàn),就是在:

代碼如下:

new SWFObject("http://www.pec365.com/Flash/20071113.swf", "mymovie", "304", "367", "7", "#FFFFFF");

的時候,如果傳入的Flash文件的地址有誤,又或者該Flash文件在服務器中被刪除掉了,那么你將看到一種最不愿意看到的情況,示例

如下:

代碼如下:

<html>

<title>DEMO</title>

<head>

<script type="text/javascript" src="swfobject_source.js"></script>

</head>

<body>

<form id="Form1">

<div id="flashcontent">

<a >

<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" border="0" />

</a>

</div>

</form>

<script type="text/javascript">

// 注意,我在Flash文件名前加了一個f

var so = new SWFObject("http://www.pec365.com/Flash/f20071113.swf", "mymovie", "304", "367", "7", "#FFFFFF");

so.write("flashcontent");

</script>

</body>

</html>

建議您親自執(zhí)行一下這段代碼,如果您是一名新手可參見上篇中說介紹的步驟來運行一下這段代碼,真實的感受一下“災難”的降臨。

是的,您將看到頁面上一片空白,那原本用于替換不能顯示Flash時備用的圖片也不見了,去了哪里呢?我經(jīng)過調試后發(fā)現(xiàn),縱使因為傳入的Flash文件地址錯誤,也會創(chuàng)建一個錯誤的<object [……]></object>標簽將<div id="flashcontent">[……]</div>中的內容替換掉,從而就是你看到的,將形成一個高寬分別為304px和367px的空白區(qū)域(如果安裝了Flash播放器,在屏幕左上角點擊鼠標右鍵,您會有所發(fā)現(xiàn)),于是噩夢就如此降臨了。

為了解決這個噩夢般的結果,于是乎,我就想到一個餿主意,首先檢查一下根據(jù)傳入的Flash文件地址檢查一下服務器上是否真的存在該文件,如果返回的結果是該Flash文件存在,那么就執(zhí)行swfobject.embedSWF()方法,而具體的思路就是利用XMLHttpRequest 對象,通過GET/HEAD方式請求服務器,然后判斷xmlHttp.status == 200 || xmlHttp.status == 302作為文件存在的依據(jù),但是這種方式似乎還是存在一定的缺陷,暫時我還沒有能力完善,現(xiàn)將我最終的解決方案示例如下:

代碼如下:

<html>

<title>DEMO</title>

<head>

<script language="javascript" type="text/javascript" src="JavaScript/swfobject.js"></script>

<script type="text/javascript">

(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 GetXmlHttpObject = function() {

var xmlHttp = null;

try {

// Firefox, Opera 8.0+, Safari

xmlHttp = new XMLHttpRequest();

}

catch (e) {

// Internet Explorer

try {

// Older IE

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

// New 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("您的Flash地址無效,請仔細檢查"); // 只是用于調試時檢查Flash地址地否正確

}

}

})();

</script>

</head>

<body>

<form id="Form1">

<div id="flashcontent">

<a >

<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" border="0" />

</a>

</div>

</form>

</body>

</html>

更多信息請查看網(wǎng)頁制作
由于各方面情況的不斷調整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢?yōu)闇剩?/div>

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)