什么地JS?什么是JSP?

JavaScript016

什么地JS?什么是JSP?,第1张

JS:

一种代码,英文名JAVA SCRIPT,是java 脚本语言,很多网站页面两边有小广告,那个就是JS搞的~~~

附: (JS代码大全):

1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键

<table border oncontextmenu=return(false)><td>no</table>可用于Table

2. <body onselectstart="return false">取消选取、防止复制

3. onpaste="return false" 不准粘贴

4. oncopy="return false" oncut="return false" 防止复制

5. <link rel="Shortcut Icon" href="favicon.ico">IE地址栏前换成自己的图标

6. <link rel="Bookmark" href="favicon.ico">可以在收藏夹中显示出你的图标

7. <input style="ime-mode:-Disabled">关闭输入法

8. 永远都会带着框架

<script language="javascript"><!--

if (window == top)top.location.href = "frames.htm"//frames.htm为框架网页

// --></script>

9. 防止被人frame

<SCRIPT LANGUAGE=javascript><!--

if (top.location != self.location)top.location=self.location

// --></SCRIPT>

10. 网页将不能被另存为

<noscript><iframe src=*.html></iframe></noscript>

11. <input type=button value=查看网页源代码

onclick="window.location = `view-source:`+ http://www.51js.com/`">

12.删除时确认

<a href=`javascript:if(confirm("确实要删除吗?"location="boos.asp?&areyou=删除&page=1"`>删

除</a>

13. 取得控件的绝对位置

//javascript

<script language="javascript">

function getIE(E){

var t=e.offsetTop

var l=e.offsetLeft

while(e=e.offsetParent){

t+=e.offsetTop

l+=e.offsetLeft

}

alert("top="+t+"/nleft="+l)

}

</script>

//VBScript

<script language="VBScript"><!--

function getIE()

dim t,l,a,b

set a=document.all.img1

t=document.all.img1.offsetTop

l=document.all.img1.offsetLeft

while a.tagName<>"BODY"

set a = a.offsetParent

t=t+a.offsetTop

l=l+a.offsetLeft

wend

msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"

end function

--></script>

14. 光标是停在文本框文字的最后

<script language="javascript">

function cc()

{

var e = event.srcElement

var r =e.createTextRange()

r.moveStart(`character`,e.value.length)

r.collapse(true)

r.select()

}

</script>

<input type=text name=text1 value="123" onfocus="cc()">

15. 判断上一页的来源

javascript:

document.referrer

16. 最小化、最大化、关闭窗口

<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">

<param name="Command" value="Minimize"></object>

<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">

<param name="Command" value="Maximize"></object>

<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">

<PARAM NAME="Command" value="Close"></OBJECT>

<input type=button value=最小化 onclick=hh1.Click()>

<input type=button value=最大化 onclick=hh2.Click()>

<input type=button value=关闭 onclick=hh3.Click()>

本例适用于IE

17.屏蔽功能键Shift,Alt,Ctrl

<script>

function look(){

if(event.shiftKey)

alert("禁止按Shift键!"//可以换成ALT CTRL

}

document.onkeydown=look

</script>

18. 网页不会被缓存

<META HTTP-EQUIV="pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">

<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

或者<META HTTP-EQUIV="expires" CONTENT="0">

19.怎样让表单没有凹凸感?

<input type=text style="border:1 solid #000000">

<input type=text style="border-left:noneborder-right:noneborder-top:noneborder-bottom:

1 solid #000000"></textarea>

20.<div><span>&<layer>的区别?

<div>(division)用来定义大段的页面元素,会产生转行

<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行

<layer>是ns的标记,ie不支持,相当于<div>

21.让弹出窗口总是在最上面:

<body onblur="this.focus()">

22.不要滚动条?

让竖条没有:

<body style=`overflow:-Scrolloverflow-y:hidden`>

</body>

让横条没有:

<body style=`overflow:-Scrolloverflow-x:hidden`>

</body>

两个都去掉?更简单了

<body scroll="no">

</body>

23.怎样去掉图片链接点击后,图片周围的虚线?

<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>

24.电子邮件处理提交表单

<form name="form1" method="post" action="mailt****@***.com" enctype="text/plain">

<input type=submit>

</form>

25.在打开的子窗口刷新父窗口的代码里如何写?

window.opener.location.reload()

26.如何设定打开页面的大小

<body onload="top.resizeTo(300,200)">

打开页面的位置<body onload="top.moveBy(300,200)">

27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动

<style>

body

{background-image:url(logo.gif)background-repeat:no-repeat

background-position:centerbackground-attachment: fixed}

</style>

28. 检查一段字符串是否全由数字组成

<script language="javascript"><!--

function checkNum(str){return str.match(//D/)==null}

alert(checkNum("1232142141"

alert(checkNum("123214214a1"

// --></script>

29. 获得一个窗口的大小

document.body.clientWidthdocument.body.clientHeight

30. 怎么判断是否是字符

if (/[^/x00-/xff]/g.test(s)) alert("含有汉字"

else alert("全是字符"

31.TEXTAREA自适应文字行数的多少

<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">

</textarea>

32. 日期减去天数等于第二个日期

<script language=javascript>

function cc(dd,dadd)

{

//可以加上错误处理

var a = new Date(dd)

a = a.valueOf()

a = a - dadd * 24 * 60 * 60 * 1000

a = new Date(A)

alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日"

}

cc("12/23/2002",2)

</script>

33. 选择了哪一个Radio

<HTML><script language="vbscript">

function checkme()

for each ob in radio1

if ob.checked then window.alert ob.value

next

end function

</script><BODY>

<INPUT name="radio1" type="radio" value="style" checked>style

<INPUT name="radio1" type="radio" value="barcode">Barcode

<INPUT type="button" value="check" onclick="checkme()">

</BODY></HTML>

34.脚本永不出错

<SCRIPT LANGUAGE="javascript">

<!-- Hide

function killErrors() {

return true

}

window.onerror = killErrors

// -->

</SCRIPT>

35.ENTER键可以让光标移到下一个输入框

<input onkeydown="if(event.keyCode==13)event.keyCode=9">

36. 检测某个网站的链接速度:

把如下代码加入<body>区域中:

<script language=javascript>

tim=1

setInterval("tim++",100)

b=1

var autourl=new Array()

autourl[1]="http://www.njcatv.net/"

autourl[2]="javacool.3322.net"

autourl[3]="http://www.sina.com.cn/"

autourl[4]="http://www.nuaa.edu.cn/"

autourl[5]="http://www.cctv.com/"

function butt(){

document.write("<form name=autof>"

for(var i=1i<autourl.lengthi++)

document.write("<input type=text name=txt"+i+" size=10 value=测试中……>=》<input type=text

name=url"+i+" size=40>=》<input type=button value=GO

onclick=window.open(this.form.url"+i+".value)><br>"

document.write("<input type=submit value=刷新></form>"

}

butt()

function auto(url){

document.forms[0]["url"+b].value=url

if(tim>200)

{document.forms[0]["txt"+b].value="链接超时"}

else

{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}

b++

}

function run(){for(var i=1i<autourl.lengthi++)document.write("<img

src=http://"+autourl+"/"+Math.random()+" width=1 height=1

onerror=auto(http://"+autourl+"`)>"}

run()</script>

37. 各种样式的光标

auto :标准光标

default :标准箭头

hand :手形光标

wait :等待光标

text :I形光标

vertical-text :水平I形光标

no-drop :不可拖动光标

not-allowed :无效光标

help :?帮助光标

all-scroll :三角方向标

move :移动标

crosshair :十字标

e-resize

n-resize

nw-resize

w-resize

s-resize

se-resize

sw-resize

38.页面进入和退出的特效

进入页面<meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)">

推出页面<meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)">

这个是页面被载入和调出时的一些特效。Duration表示特效的持续时间,以秒为单位。Transition表示使

用哪种特效,取值为1-23:

0 矩形缩小

1 矩形扩大

2 圆形缩小

3 圆形扩大

4 下到上刷新

5 上到下刷新

6 左到右刷新

7 右到左刷新

8 竖百叶窗

9 横百叶窗

10 错位横百叶窗

11 错位竖百叶窗

12 点扩散

13 左右到中间刷新

14 中间到左右刷新

15 中间到上下

16 上下到中间

17 右下到左上

18 右上到左下

19 左上到右下

20 左下到右上

21 横条

22 竖条

23 以上22种随机选择一种

39.在规定时间内跳转

<META http-equiv=V="REFRESH" content="5URL=http://www.51js.com">

40.网页是否被检索

<meta name="ROBOTS" content="属性值">

其中属性值有以下一些:

属性值为"all": 文件将被检索,且页上链接可被查询;

属性值为"none": 文件不被检索,而且不查询页上的链接;

属性值为"index": 文件将被检索;

属性值为"follow": 查询页上的链接;

属性值为"noindex": 文件不检索,但可被查询链接;

属性值为"nofollow": 文件不被检索,但可查询页上的链接。

41.变换网页的鼠标光标

<BODY style="CURSOR: url(http://203.73.125.205/~liangmi2/farmfrog01.cur`)">

42.怎样实现在任务栏显示小图标的效果? (要使用绝对地址)

有些站点,访问时会在地址栏地址前显出小图标,添加到收藏夹后也在收藏栏中显示图标,

这样很好的与其它站点有了区别。

要达到这个效果,先需做出这个图标文件,图像为16*16像素,不要超过16色。文件格式为ico,然后上传至你的网站。

然后,在需要的页面中,加上以下html语句到文件的<head>和</head>之间(假设以上ico文件的地址http://happyisland.126.com/icon.ico)。

<link REL="SHORTCUT ICON"href="http:///happyisland.126.com/icon.ico">

如果访问者的浏览器是IE5.0,就不需加任何代码,只要将图标文件上传到网站的根目录下即可。

1,META标签里的代码是什么意思?

<META>是放于<HEAD>与</HEAD>之间的标记.以下是我总结它在网页中最常见的几种。

<meta name="Keywords" content="图片, 新闻, 音乐, 软件">

该网页的关键字,作用于搜索引擎的登录,事实上它在现在的网站中并没什么用。

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<meta http-equiv="Content-Type" content="text/htmlcharset=iso-8859-1">

设定这是 HTML 文件及其编码语系,简体中文网页使用charset=gb2312,繁体中文使用charset=big5,或者不设编码也可,纯英文网页建议使用 iso-8859-1。

<meta name="GENERATOR" content="Microsoft FrontPage 5.0">

这只表示该网页由什么编辑器写的。

<meta http-equiv="refresh" content="10url=http://www.hkiwc.com">

这行较为实用,能于预定秒数内自动转到指定网址。原代码中 10 表示 10秒。

2,怎么改变滚动条的颜色,只有ie5.5版本以上才能支持。

这是使用CSS语言,在次说明一下,它和我的浏览器版本有一定的关系。

scrollbar-arrow-color:上下按钮上三角箭头的颜色。

scrollbar-base-color:滚动条的基本颜色。

scrollbar-dark-shadow-color:立体滚动条强阴影的颜色

scrollbar-face-color:立体滚动条凸出部分的颜色

scrollbar-highlight-color:滚动条空白部分的颜色

scrollbar-shadow-color立体滚动条阴影的颜色。

scrollbar-track-color:#99CC33

scrollbar-3dlight-color:#A8CBF1

代码如下:

<style>

<!--

BODY {

scrollbar-face-color:#99CC33//(立体滚动条凸出部分的颜色)

scrollbar-highlight-color:#A8CBF1//(滚动条空白部分的颜色)

scrollbar-shadow-color:#A8CBF1//(立体滚动条阴影的颜色)

scrollbar-arrow-color:#FF9966//(上下按钮上三角箭头的颜色)

scrollbar-base-color:#A8CBF1//(滚动条的基本颜色)

scrollbar-darkshadow-color:#A8CBF1//(立体滚动条强阴影的颜色)

scrollbar-track-color:#99CC33

scrollbar-3dlight-color:#A8CBF1

}

-->

</style>

在这我补充几点:

1.让浏览器窗口永远都不出现滚动条。

<body style="overflow-x:hiddenoverflow-y:hidden">或<body style="overflow:hidden">或<body scroll=no>

2,没有水平滚动条

<body style="overflow-x:hidden">

3,没有垂直滚动条

<body style="overflow-y:hidden">

3,如何给图片抖动怎做的.

<SCRIPT language=javascript1.2>

<!--

var rector=2

var stopit=0

var a=1

var count=0

function init(which){

stopit=0

shake=which

shake.style.left=0

shake.style.top=0

}

function rattleimage(){

if ((!document.all&&!document.getElementById)||stopit==1||count==100)

return

count++

if (a==1){

shake.style.top=parseInt(shake.style.top)+rector

}

else if (a==2){

shake.style.left=parseInt(shake.style.left)+rector

}

else if (a==3){

shake.style.top=parseInt(shake.style.top)-rector

}

else{

shake.style.left=parseInt(shake.style.left)-rector

}

if (a<4)

a++

else

a=1

setTimeout("rattleimage()",50)

}

function stoprattle(which){

stopit=1

count=0

which.style.left=0

which.style.top=0

}

//-->

</SCRIPT>

<style>.shakeimage {POSITION: relative}

</style>

<img src="图片的路径" onmouseout=stoprattle(this) onmouseover=init(this)rattleimage() class=shakeimage>

4,在DW如何给水平线加颜色。

在DW中没有此项设置,你只能在HTML中加入代码:<hr color=red noshade>按F12的预览在能看到。由于在NC中不支持<hr>的COLOR属性,所以在DW中没有此项设置。

5,如何在网页中实现flash的全屏播放?

只要在调用swf文件的HTML中将WIDTH和HEIGHT的参数设为100%即可,当然也可以在Flash导出HTML文件的设置中进行设置,方法是:打开File菜单;选Publish Settings弹出导出设置对话框;在HTML标签下的Dimensions选项,下拉后选中Percent(百分比),并在WIDTH 和HEIGHT框中填100.就行了。

6,为什么我在DW中插入的Flash动画缺看不找!

如果你没有正确地安装Dreamweaver和Flash,那么在你预览的时候,Dreamweaver会提示你缺少播放的插件,请你按装InstallAXFlash.exe 并从新启动计算机。现在IE6已经捆绑这个程序。

7,在Flash中,如果屏蔽鼠标右键?FS命令都是什么意思?

fscommand ("fullscreen", "true/false"(全屏设置,TRUE开,FALSE关)

fscommand ("showmenu", "true/false"(右键菜单设置,TRUE显示,FALSE不显示)

fscommand ("allowscale", "true/false"(缩放设置,TRUE自由缩放,FALSE调整画面不影响影片本身的尺寸)

fscommand ("trapallkeys", "true/false"(快捷键设置,TRUE快捷键开,FALSE快捷键关)

fscommand ("exec"(EXE程序调用)

fscommand ("quit"(退出关闭窗口)

8,Flash中什么是隐形按钮。

利用button中的hit帧来制作只有感应区域而完全透明的按钮。

9,如何给Flash动画做链接。

Dreamweaver是不能给Flash制作链接的,只能在Flash中用geturl()加链接,然后再插入Dreamweaver中。

10,DW中的层的技巧。

层是可以嵌套的,我个人给大家一个技巧,在层面板中按住CTRL再拖放层到你想去成为其子层的地方就行了,我认为这是最简单直观的方法了。

11,如何改变鼠标的形状?

在Dreamweaver4中CSS样式面板:

按CTR+SHIFT+E--出现样式表对话框,点击NEW,出现编辑对话框,在左边最后一项extensions-cursor 选择你要改的指针形式就可以了,然后把你要想改变的地方运用样式表,如果整页都有在<body bgcolor="#003063" text="#ffffff" id=all>中加入就行了。

<span style="cursor:X`>样例</span>

这里选择(文本)作为对象,还可以自己改为其他的,如link等。

x可以等于=hand(手形)、crosshair(十字)、text(文本光标)、wait(顾名思义啦)、default(默认效果)、help(问号)、e-size(向右箭头)、ne-resize(向右上的箭头)、nw-resize(向左上的箭头)、w-resize(向左的箭头)、sw-resize(左下箭头)、s-resize(向下箭头)、se-resize(向右下箭头)、auto(系统自动给出效果)。

12,用CSS做邮票,看看吧!

<input type=button value=我象不象邮票? style="height:80pxborder:2px dashed #cccccc">

13,经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,怎么做呢!

这javascript代码即可实现,摘录蓝色论坛。

【1、最基本的弹出窗口代码】

其实代码非常简单:

<SCRIPT LANGUAGE="javascript">

<!--

window.open (`page.html`)

-->

</SCRIPT>

因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">标签和</script>之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。

window.open (`page.html`) 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以,只是不要混用。

这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body bgcolor="#003063" text="#ffffff" id=all>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。

【2、经过设置后的弹出窗口】

下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。

我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。

<SCRIPT LANGUAGE="javascript">

<!--

window.open (`page.html`, `newwindow`, `height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no`)

//写成一行

-->

</SCRIPT>

参数解释:

<SCRIPT LANGUAGE="javascript">js脚本开始;

window.open 弹出新窗口的命令;

`page.html` 弹出窗口的文件名;

`newwindow` 弹出窗口的名字(不是文件名),非必须,可用空``代替;

height=100 窗口高度;

width=400 窗口宽度;

top=0 窗口距离屏幕上方的象素值;

left=0 窗口距离屏幕左侧的象素值;

toolbar=no 是否显示工具栏,yes为显示;

menubar,scrollbars 表示菜单栏和滚动栏。

resizable=no 是否允许改变窗口大小,yes为允许;

location=no 是否显示地址栏,yes为允许;

status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;

</SCRIPT>js脚本结束

【3、用函数控制弹出窗口】

下面是一个完整的代码。

<html>

<head>

<script LANGUAGE="javascript">

<!--

function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=

no, menubar=no, scrollbars=no, resizable=no, location=no, status=no"

//写成一行

}

//-->

</script>

</head>

<body onload="openwin()">

…任意的页面内容…

</body>

</html>

这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。

怎么调用呢?

方法一:<body onload="openwin()">浏览器读页面时弹出窗口;

方法二:<body onunload="openwin()">浏览器离开页面时弹出窗口;

方法三:用一个连接调用:

<a href="#" onclick="openwin()">打开一个窗口</a>

注意:使用的“#”是虚连接。

方法四:用一个按钮调用:

<input type="button" onclick="openwin()" value="打开窗口">

14,没有用表格写的,让大家随便看看,没什么。

<html>

<head>

<title>江南荷花扇面</title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<style type="text/css">

<!--

.font1 { font-size: 12pxcolor: #999999text-decoration: none}

a { font-size: 12pxcolor: #999999text-decoration: none}

a:hover { font-size: 12pxcolor: #000000text-decoration: none}

-->

</style>

</head>

<body bgcolor="#FFFFFF" text="#000000">

<div class="font1" style="writing-mode=tb-rlheight:200px" width=300>

<p>盛夏 尚 涛

<p><a href="index.htm">一夜露痕黄粉香 袁运甫 </a>

<p>瑶池昨夜新凉 王金岭

<p>一朵白莲随意开 吴冠南

<p>新雨迎秋欲满塘 齐辛民

<p>十里荷香齐辛民

<p>濯清莲而不妖 卢世曙

</div>

</body>

</html>

15,IE6已支持自定义cursor!

语法格式 cursor:url(图标) //cur或是ani文件.

cur就是WINDOWS中的光标(cursor)文件,光标文件与图标(ICON)文件除了文件头有一个位置的值不同外,实际是一样的。

ani是WINDOWS中的动画光标(图标)文件。

<style type="text/css">

<!--

.unnamed1 { cursor:url(arrow2c.cur)}

-->

</style>

16,用marquee做的滚动字幕.这也我刚看到论坛的朋友在问。

语法:

align=# | top | middle| bottom //对齐方式)

BEHAVIOR=ALTERNATE | SCROLL | SLIDE //移动的方式

BGCOLOR=color//底色区域颜色

DIRECTION=DOWN | LEFT | RIGHT | UP //移动的方向

Loop=n //循环次数(默认是循环不止)

Scrolldelay=milliseconds//延时

height=# width=# //区域面积

hspace=# vspace=# //空白区域

scrollamount=# //移动的速度

<marquee align=top behavior=ALTERNATE BGCOLOR=#000000 height=60 width=433 scrollamount=5></marquee>

17,在FLASH5中也存在一些字体,打散后变成一团的事是为什么?有解决的办法吗。

这是大家很常见的问题!可能是对字库支持的不好!我个是做成透明的gif图片格式,然后倒入。

18,flash的网页里“加入收藏夹”功能怎么实现?

在as中加getUrl("java script:window.external.addFavorite(http://skydesigner.51.net`,`我的工作室`)"

19,在Flash中,文本的动态属性和输入属性的区别。

input text在运行时可被用户或程序改变其值。

ynamic text仅允许被程序修改。

20,怎样在IE中调用Dreamweaver进行编辑.

相信很多在使用WinME或Window2000的朋友,会遇见是个问题。很简单,把我们笔记本程序打开,保存为一个 *.reg 文件。双击它将信息添加到注册表即可。

REGEDIT4

[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver]

[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell]

[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell\edit]

[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell\edit\command]

@="\"c:\\Program Files\\Macromedia\\Dreamweaver 4\\dreamweaver.exe\" \"%1\""

21,设置表格虚线。

方法一:作一个1X2的图。半黑半白,再利用表格作成线。

方法二:在css里面设,要IE5。5才支持这种效果。

style="BORDER-LEFT: #000000 1PX DASHEDBORDER-RIGHT: #000000 1PX DASHEDBORDER-TOP: #

Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等。

讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了。

一、传统的方法

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/

swflash.cab#version=7,0,0,0"

width="550" height="400" id="Untitled-1" align="middle">

<param name="allowScriptAccess" value="sameDomain" />

<param name="movie" value="mymovie.swf" />

<param name="quality" value="high" />

<param name="bgcolor" value="#ffffff" />

<embed src="mymovie.swf" quality="high" bgcolor="#ffffff" width="550"

height="400" name="mymovie" align="middle" allowScriptAccess="sameDomain"

type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

</object>

这方法是使用 object 和 embed 标签来嵌入,细心的会发现,object 的很多参数和 embed 里面的很多属性是重复的,为什么这样做?为了浏览器兼容性,有的浏览器支持 object,有的支持 embed,这也是为什么要修改 Flash 的参数时两个地方都要改的原因。这种方法是 Macromedia 一直以来的官方方法,最大限度的保证了 Flash 的功能,没有兼容性问题。但是它现在不那么好用了:

无法通过验证,由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的。当然,如果你不在乎什么规范不规范,另当别论。

微软由于种种原因,在 sp2 后限制了 IE 的 ActiveX 的使用模式,就是在页面中的 ActiveX 有一个虚框,需要用户点击一次才能正常交互。Flash是作为一个 ActiveX 嵌入到网页中的,所以它也会受牵连,只有通过 JS 嵌入 Flash 才能解决这个问题。

没有 Flash 版本检测,如果版本浏览器的flash插件版本不够,或者不能正常显示你的 swf 文件,或者会弹出一个 ActiveX 的确认安装的框——这个框对很多用户来说是很恐怖的。

二、只用 object 的方法

这种方法的名字叫做 Flash satay,最早是2002年由 Drew McLellan 发表在 A List Apart 上,后来又经过了几次完善:

<object type="application/x-shockwave-flash

data="c.swf?path=movie.swf"

width="400" height="300">

<param name="movie"

value="c.swf?path=movie.swf" />

<img src="noflash.gif"

width="200" height="100" alt="" />

</object>

这方法没 embed 了,可以通过验证,是标准的嵌入 Flash 的方法,浏览器兼容性也不错,看起来几乎完美,不过还是有问题的:

需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。

同上面第二点,ActiveX的虚框问题。

继续同上没有版本检测

还是有少数用户代理(比如一些版本的 safari 和一些屏幕阅读器)不认这种方式,有 bug。

三、用JS嵌入的方法

用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用 document.write 直接写,这法子说实话不大好,感觉 hack 成分多了,有点为了验证而验证的意思,而且没有体现出什么 JS 的优势。我觉得一个好的 JS 嵌入脚本,在保证 Flash 应有功能的基础上,�⒒?JS 的优势应该要有版本检测,要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题),要易于重复使用。

我知道的比较常见的 JS 嵌入方法有以下几个

SWFObject

UFO - Unobtrusive Flash Objects

Macomedia(现在是Adobe了..)提供的脚本[这里]和[这里]。

我 SWFObject 用的比较多,就挑它来说一些这种方法的优点:

IE中没有讨厌的虚框问题了。

提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。

易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。

可以通过验证——当然这个不是重点,只是顺带效果罢了。

四、我的结论

现阶段用 JS 嵌入 Flash 是最完美的方法,虽然这法子这也是由于浏览器的种种问题而作出的妥协。

但它在保证 Flash 功能的前提下还利用 JS 提供了额外的好处,再者又已经有人写了很完善的嵌入脚本可以方面地下载使用(推荐 SWFObject),我们还有什么理由不用它呢?

SWFObject 那网页是英文的,这里写个简单的用法教程:

下载它的.js文件,在这里: http://blog.deconcept.com/swfobject/swfobject1-4.zip (如果链接失效可能是版本有更新,请用上面给出的地址去主页下载最新版本)

在你的 HTML 页面头部<head>区嵌入这个脚本文件:<script type="text/javascript" src="swfobject.js"></script>

在你的 HTML 中写一个用来放 Flash 的容器,比如<div>,并随便给一个 id 比如 flashcontent。然后在里面放上你的替换内容。

<div id="flashcontent">

这里放替换内容,用来在 Flash 无法显示时显示。

</div>

使用脚本替换这个内容:

<script type="text/javascript">

var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699")

//参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色

//这是最基本的,如果你要高级的设置,就仔细翻翻说明吧。

so.write("flashcontent")

</script>

这脚本可以写在 HTML 中也可以写在外部 .js 文件中。

OK