有趣的script标签用getAttribute方法来自脚本吧
2007-03-10 00:00
295 查看
在网页中引入外部对象并传递参数,想来大家都有这个经历。一般来说,使用的标签是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)
您可能感兴趣的文章:
相关文章推荐
- 有趣的script标签用getAttribute方法来自脚本吧
- 非静态的字段、方法或属性“System.Web.UI.Page.ClientScript...”要求对象引用 (封装注册脚本)
- 从服务器端向客户端注册script脚本的几种方法
- head中加载脚本的方法:wp_enqueue_script/style 与 wp_head
- ubuntu下自动打开多终端的多个标签并执行不同脚本的方法
- Viz Trio 脚本(Script) 续篇-如何通过导入txt来自动生成串联单
- ubuntu下自动打开多终端的多个标签并执行不同脚本的方法
- 引用外部脚本时script标签关闭的写法
- IE浏览器里无法运行脚本(script)常见的解决方法!
- JQuery的html(data)方法与<script>脚本块的解决方法
- 使用AJAX.ScriptManager时注册脚本的方法
- UpdatePanel中使用脚本文件(ScriptManager.RegisterStartupScript 方法)
- Unity 使用备忘(四) 游戏物体不挂在脚本文件上直接实现Button(Script)脚本文件的Onclick方法
- asp.net ajax后台使用JS脚本.需要使用ScriptManager..::.RegisterStartupScript 方法
- 外部脚本必须包含 <script> 标签吗?
- Script标签和脚本执行顺序
- IE浏览器里无法运行脚本(script)常见的解决方法!
- JS脚本实现动态给标签控件添加事件的方法
- 使用 ClientScriptManager 类的 RegisterClientScriptBlock方法添加客户端脚本
- 引用外部脚本时script标签关闭的写法