当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 有趣的script标签用getAttribute方法来自脚本吧

Javascript
js 方法实现返回多个数据的代码
Ext 表单布局实例代码
javascript document.referrer 用法
JavaScript 字符编码规则
JS 动态加载脚本的4种方法
jQuery textarea的长度进行验证
jQuery select的操作实现代码
jQuery 1.2.x 升級 1.3.x 注意事项
关于viewport,Ext.panel和Ext.form.panel的关系
日期 时间js控件
JavaScript的parseInt 进制问题
javascript 有用的脚本函数
javascript 两个字符串比较函数
javascript 代码运行器
js arguments.callee的应用代码
JavaScript Table排序 2.0 (更新)
给Function做的OOP扩展
<script defer> defer 是什么意思
FF和IE之间7个JavaScript的差异
javascript获取当前ip的代码

Javascript 中的 有趣的script标签用getAttribute方法来自脚本吧


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 349 ::
收藏到网摘: n/a

在网页中引入外部对象并传递参数,想来大家都有这个经历。一般来说,使用的标签是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 全选 提示:你可先修改部分代码,再按运行]

script标签除了包含代码之外,想过用他来存储数据吗?这样做的目的主要是为了实现跨域限制。
可以用字符串的方式来存放文本,但这种方式是不直观的,而且需要对特殊字符进行处理,比如:
str="aaaa"
str+="bbbb"

str="aaaa\
bbbb"
我们可以利用函数能够显示源码,并能够显示源码中的备注的特性,把数据巧妙地放置在备注中,这样就可以不用遵守js语法的规范了。
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

有个应用,拿出来给大家分享
由于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)