|
在網頁中引入外部對象并傳遞參數,想來大家都有這個經歷。一般來說,使用的標簽是iframe和embed(針對flash),不過這兩個標簽都不能象xml一般設置參數,只能通過在url地址后追加查詢字符串的方式來傳值。htc倒是挺不錯的,只是沒有瀏覽器兼容性,想來大家也不考慮它了。
用script標簽可以把一個外部js文件載入到頁面中,而且不管這個文件是否同域,都同樣有效,這種跨域特性,可以說是獨一無二的。一般情況下,我們都只是把js文件作為公用代碼的一部分加以使用,在這里面集成一些公用函數和類。換個思維,我們把script標簽看作是一個大的可視化的組件,對其傳入參數,并根據參數進行不同的布局調整,這樣做是很有意思的。
舉個例子,“<script width=300 height=200 filePath="http://mp3.baidu.com/abc.mp3" src=player.js></script>”,這樣的寫法是不是挺直觀,而且又具有實用性呢?大家會問,player.js如何取到script標簽里的參數?其實這很簡單,只需要在player.js里查找到最后一個script元素,就是當前的這個元素了,然后用getAttribute方法,想取多少個參數都可以。
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
script標簽除了包含代碼之外,想過用他來存儲數據嗎?這樣做的目的主要是為了實現跨域限制。
可以用字符串的方式來存放文本,但這種方式是不直觀的,而且需要對特殊字符進行處理,比如:
str="aaaa"
str+="bbbb"
或
str="aaaa/
bbbb"
我們可以利用函數能夠顯示源碼,并能夠顯示源碼中的備注的特性,把數據巧妙地放置在備注中,這樣就可以不用遵守js語法的規范了。
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
有個應用,拿出來給大家分享
由于xp的補丁,一夜之間讓大江南北的網站上的flash全部加上虛框,需要點擊才能激活。大家在恨得牙痛之時,只好想出對應的方法,下面是新浪網插入flash的方法:
-----------------------------------------------------
<script type="text/Javascript" src="http://image2.sina.com.cn/home/sinaflash.js"></script>
<script>
var objFlash = new sinaFlash("abc.swf", "", "100", "100", "7", "", false,"high");
objFlash.addParam("wmode", "opaque");
objFlash.write("flashcontent_1D194BAF55E2");
</script>
-----------------------------------------------------
如果善用script標簽,則可以簡化為:
-----------------------------------------------------
<script src="swf.js" movie="abc.swf" width="100" height="100" wmode="opaque"></script>
-----------------------------------------------------
一句話足矣
下面是swf.js文件的內容:
-----------------------------------------------------
var ol,oJs,flaID,sMovie
ol=document.getElementsByTagName("script")
oJs=ol[ol.length-1]
flaID=oJs.getAttribute("flaID")||""
sMovie=oJs.getAttribute("movie")
if(sMovie.slice(0,1)=="{"&&sMovie.slice(-1)=="}")
sMovie=eval(sMovie.slice(1,-1))
l="<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' id='"+flaID+"' width='"+(oJs.getAttribute("width")||"100%")+"' height='"+(oJs.getAttribute("height")||"100%")+"'>/
<param name=movie value='"+sMovie+"' />/
<param name=wmode value='"+(oJs.getAttribute("wmode")||"window")+"' />/
<param name=allowscriptaccess value='always' />/
<embed id='"+flaID+"' name='"+flaID+"' allowscriptaccess=always wmode=transparent src='"+sMovie+"' width=120% height=100% type='application/x-shockwave-flash'></embed>/
</object>"
document.write(l)
JavaScript技術:有趣的script標簽用getAttribute方法來自腳本吧,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。