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

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

關(guān)于我的SWFObject V1.5的使用過(guò)程,以上篇中的介紹暫時(shí)告一段落了,下面我將會(huì)帶領(lǐng)SWFObject V2.1出場(chǎng)與大家見(jiàn)面,如果我早一點(diǎn)結(jié)識(shí)V2.1的話,或許就不會(huì)受到“等待HTML DOM加載”問(wèn)題的侵?jǐn)_了。

首先,給大家簡(jiǎn)要介紹一下V2.1語(yǔ)法的調(diào)用示例:

代碼如下:

<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)的初始化設(shè)置,效果一樣

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、直接寫(xiě)在后面,就一句話,簡(jiǎn)潔剽悍,不拖泥帶水

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>

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

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

代碼如下:

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

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

如下:

代碼如下:

<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文件名前加了一個(gè)f

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

so.write("flashcontent");

</script>

</body>

</html>

建議您親自執(zhí)行一下這段代碼,如果您是一名新手可參見(jiàn)上篇中說(shuō)介紹的步驟來(lái)運(yùn)行一下這段代碼,真實(shí)的感受一下“災(zāi)難”的降臨。

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

為了解決這個(gè)噩夢(mèng)般的結(jié)果,于是乎,我就想到一個(gè)餿主意,首先檢查一下根據(jù)傳入的Flash文件地址檢查一下服務(wù)器上是否真的存在該文件,如果返回的結(jié)果是該Flash文件存在,那么就執(zhí)行swfobject.embedSWF()方法,而具體的思路就是利用XMLHttpRequest 對(duì)象,通過(guò)GET/HEAD方式請(qǐng)求服務(wù)器,然后判斷xmlHttp.status == 200 || xmlHttp.status == 302作為文件存在的依據(jù),但是這種方式似乎還是存在一定的缺陷,暫時(shí)我還沒(méi)有能力完善,現(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;

};

// 就是用于檢查服務(wù)器上指定的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地址無(wú)效,請(qǐng)仔細(xì)檢查"); // 只是用于調(diào)試時(shí)檢查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>

更多信息請(qǐng)查看網(wǎng)頁(yè)制作
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)頁(yè)制作

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)