.结构性定义
文件类型 <HTML></HTML> (放在档案的开头与结尾)
文件主题 <TITLE></TITLE> (必须放在「文头」区块内)
文头 <HEAD></HEAD> (描述性资料,像是「主题」)
文体 <BODY></BODY> (文件本体)
(由浏览器控制的显示风格)
标题 <H?></H?> (从1到6,有六层选择)
标题的对齐 <H? ALIGN=LEFT|CENTER|RIGHT></H?>
区分 <DIV></DIV>
区分的对齐 <DIV ALIGN=LEFT|RIGHT|CENTER|JUSTIFY></DIV>
引文区块 <BLOCKQUOTE></BLOCKQUOTE> (通常会内缩)
强调 <EM></EM> (通常会以斜体显示)
特别强调 <STRONG></STRONG> (通常会以加粗显示)
引文 <CITE></CITE> (通常会以斜体显示)
码 <CODE></CODE> (显示原始码之用)
样本 <SAMP></SAMP>
键盘输入 <KBD></KBD>
变数 <VAR></VAR>
定义 <DFN></DFN> (有些浏览器不提供)
地址 <ADDRESS></ADDRESS>
大字 <BIG></BIG>
小字 <SMALL></SMALL>
与外观相关的标签(作者自订的表现方式)
加粗 <B></B>
斜体 <I></I>
底线 <U></U> (尚有些浏览器不提供)
删除线 <S></S> (尚有些浏览器不提供)
下标 <SUB></SUB>
上标 <SUP></SUP>
打字机体 <TT></TT> (用单空格字型显示)
预定格式 <PRE></PRE> (保留文件中空格的大小)
预定格式的宽度 <PRE WIDTH=?></PRE>(以字元计算)
向中看齐 <CENTER></CENTER> (文字与图片都可以)
闪耀 <BLINK></BLINK> (有史以来最被嘲弄的标签)
字体大小 <FONT SIZE=?></FONT>(从1到7)
改变字体大小 <FONT SIZE=+|-?></FONT>
基本字体大小 <BASEFONT SIZE=?> (从1到7; 内定为3)
字体颜色 <FONT COLOR="#$$$$$$"></FONT>
说明 <!-- *** --> (浏览器不会显示)
<!--修改滚动条-->
<style type="text/css">
body {
scrollbar-face-color: #330033;
scrollbar-shadow-color: #FFFFFF;
scrollbar-highlight-color: #FFFFFF;
scrollbar-3dlight-color: #FFFFFF;
scrollbar-darkshadow-color: #FFFFFF;
scrollbar-track-color: #330033;
scrollbar-arrow-color: #FFFFFF;
}
</style>
<!--修改滚动条结束-->
将上面的代码放在叶子代码的<head></head>之间,颜色可根据自己的需要修改。
滚动条的代码意思如下:
Scrollbar-Face-Color为滚动条表面颜色设定;
Scrollbar-Track-Color为滚动条底板颜色设定;
Scrollbar-Darkshadow为滚动条下边和右边边沿颜色设定;
Scrollbar-Highlight-Color为滚动条上斜面和左斜面颜色设定;
Scrollbar-Shadow-Color为滚动条下斜面和右斜面颜色设定;
Scrollbar-3Dlight-Color为滚动条上边和左边的边沿颜色设定;
Scrollbar-Arrow-Color为滚动条两端箭头颜色设定。
<!> 跑馬燈
<marquee>...</marquee>普通捲動
<marquee behavior=slide>...</marquee>滑動
<marquee behavior=scroll>...</marquee>預設捲動
<marquee behavior=alternate>...</marquee>來回捲動
<marquee direction=down>...</marquee>向下捲動
<marquee direction=up>...</marquee>向上捲動
<marquee direction=right></marquee>向右捲動
<marquee direction=’left’></marquee>向左捲動
<marquee loop=2>...</marquee>捲動次數
<marquee width=180>...</marquee>設定寬度
<marquee height=30>...</marquee>設定高度
<marquee bgcolor=FF0000>...</marquee>設定背景顏色
<marquee scrollamount=30>...</marquee>設定捲動距離
<marquee scrolldelay=300>...</marquee>設定捲動時間
1)贴图:<img src="图片地址">
2)加入连接:<a href="所要连接的相关地址">写上你想写的字</a>
3)在新窗口打开连接:<a href="相关地址" target="_blank">写上要写的字</a>
4)移动字体(走马灯):<marquee>写上你想写的字</marquee>
5)字体加粗:<b>写上你想写的字</b>
6)字体斜体:<i>写上你想写的字</i>
7)字体下划线: <u>写上你想写的字</u>
8)字体删除线: <s>写上你想写的字</s>
9)字体加大: <big>写上你想写的字</big>
10)字体控制大小:<h1>写上你想写的字</h1> (其中字体大小可从h1-h5,h1最大,h5最小)
11)更改字体颜色:<font color="#value">写上你想写的字</font>(其中value值在000000与ffffff(16位进制)之间
12)消除连接的下划线:<a href="相关地址" style="text-decoration:none">写上你想写的字</a>
13)贴音乐:<embed src="音乐地址" width="宽度" height="高度" autostart=false>
14)贴flash: <embed src="flash地址" width="宽度" height="高度">
15)贴影视文件:<img dynsrc="文件地址" width="宽度" height="高度" start=mouseover>
16)换行:<br>
17)段落:<p>段落</p>
18)原始文字样式:<pre>正文</pre>
19)换帖子背景:<body background="背景图片地址">
20)固定帖子背景不随滚动条滚动:<body background="背景图片地址" body
bgproperties=fixed>
21)定制帖子背景颜色:<body bgcolor="#value">(value值见10)
22)帖子背景音乐:<bgsound="背景音乐地址" loop=infinite>
23)贴网页:<iframe. src="相关地址" width="宽度" height="高度"></iframe>
1、店铺音乐代码:音乐网址" loop="-1">
2、图片制作代码:<img src="这里放图片地址">
3、公告图片代码:<img border="0" src="这里放图片地址" />或<img src="这里放图片地址"/>
4、悬浮挂饰代码:<img src="这里放图片地址" style="left:20px; position: relative; top:0px" />
5、商品分类代码:<img src="这里放图片地址"/>
6、字体大小代码:<font size="2">这里放要处理的文字,可用3、4、5等设置大小</font>
7、字体颜色代码:<font color="red">这里放要处理的文字,可以换成blue,yellow等</font>
8、文字链接代码:<a href="网页地址">链接的文字,在分类栏里用时链接的网页地址必须缩短</a>
9、移动文字代码:<marquee>从右到左移动的文字</marquee>
10、背景音乐代码:<bgsound loop="-1" src="这里放音乐地址"></bgsound>
11、图片附加音乐代码:<img border=0 src="这里放图片地址" dynsrc="这里放音乐地址">
12、浮动图片代码:<img alt="1" height="150" src="这里放图片地址"/>
公告图片的代码:公告挂饰:店铺分类代码:背景音乐代码:换行代码
计数器代码颜色代码:
1白色 #FFFFFF
2红色#FF0000
3绿色#00FF00
4蓝色#0000FF
5牡丹红#FF00FF
6青色 #00FFFF
7黄色#FFFF00
8黑色#000000
9海蓝#70DB93
10巧克力色#5C3317
11蓝紫色 #9F5F9F
12黄铜色#B5A642
13亮金色#D9D919
14棕色#A67D3D
15青铜色 #8C7853
162号青铜色 #A67D3D
17士官服蓝色 #5F9F9F
18冷铜色 #D98719
19铜色 #B87333
20珊瑚红 #FF7F00
21紫蓝色 #42426F
22深棕 #5C4033
23深绿 #2F4F2F
24深铜绿色 #4A766E
25深橄榄绿 #4F4F2F
26深兰花色 #9932CD
27深紫色 #871F78
28深石板蓝 #6B238E
29深铅灰色 #2F4F4F
30深棕褐色 #97694F
32深绿松石色 #7093DB
33暗木色 #855E42
34淡灰色 #545454
35土灰玫瑰红色 #856363
36长石色 #D19275
37火砖色#8E2323
38森林绿 #238E23
39金色 #CD7F32
40鲜黄色 #DBDB70
41灰色 #C0C0C0
42铜绿色 #527F76
43青黄色 #93DB70
44猎人绿 #215E21
45印度红 #4E2F2F
46土黄色 #9F9F5F
47浅蓝色 #C0D9D9
48浅灰色 #A8A8A8
49浅钢蓝色 #8F8FBD
59浅木色 #E9C2A6
60石灰绿色 #32CD32
61桔黄色 #E47833
62褐红色 #8E236B
63中海蓝色 #32CD99
64中蓝色 #3232CD
65中森林绿 #6B8E23
66中鲜黄色 #EAEAAE
67中兰花色 #9370DB
68中海绿色 #426F42
69中石板蓝色 #7F00FF
70中春绿色 #7FFF00
71中绿松石色 #70DBDB
72中紫红色 #DB7093
73中木色 #A68064
74深藏青色 #2F2F4F
75海军蓝 #23238E
76霓虹篮 #4D4DFF
77霓虹粉红 #FF6EC7
78新深藏青色 #00009C
79新棕褐色 #EBC79E
80暗金黄色 #CFB53B
81橙色 #FF7F00
82橙红色 #FF2400
83淡紫色 #DB70DB
84浅绿色 #8FBC8F
85粉红色 #BC8F8F
86李子色 #EAADEA
87石英色 #D9D9F3
88艳蓝色 #5959AB
89鲑鱼色 #6F4242
90猩红色 #BC1717
91海绿色 #238E68
92半甜巧克力色 #6B4226
93赭色 #8E6B23
94银色 #E6E8FA
95天蓝 #3299CC
96石板蓝 #007FFF
97艳粉红色 #FF1CAE
98春绿色 #00FF7F
99钢蓝色 #236B8E
100亮天蓝色 #38B0DE
101棕褐色 #DB9370
102紫红色 #D8BFD8
103石板蓝色 #ADEAEA
104浓深棕色 #5C4033
105淡浅灰色 #CDCDCD
106紫罗兰色 #4F2F4F
107紫罗兰红色 #CC3299
108麦黄色#D8D8BF
109黄绿色 #99CC32
简单常用HTML代码大全(修改网页必备)
网页常用HTML代码大全
超链接,用的最多:
点击在当前页打开网站
<a href="http://www.88wan.com/">这是我的网站</a>
效果:这是我的网站
点击弹出网站
<a href="http://www.88wan.com/" target="_blank">这是我的网站</a>
<br>这个是向下一行,比如
欢迎光临我的网站<br>希望开心
演示效果就是:
欢迎光临我的网站
希望开心
<p>向下一大行,比如
欢迎光临我的网站<p>希望开心
演示效果就是:
欢迎光临我的网站
希望开心
<b>这是粗体字
比如 <b >我的网站</ b>
演示效果:我的网站
我的网站这是字体的颜色BLUE是蓝,RED是红
演示
忽视右键
<body >
或
<body style="overflow-y:hidden">
如何几秒后转到别的页面?
<META. HTTP-EQUIV="Refresh" C>
点击关闭窗口
<a href="javascript.:top.window.close();">点击关闭窗口</a>!
请问如何去掉主页右面的滚动条?
<body scroll="no">
<body style="overflow-y:hidden">
如何做到让一个网页自动关闭.
<html>
<head>
<OBJECT id=closes type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<param name="Command" value="Close">
</object>
</head>
<body >
这个窗口会在10秒过后自动关闭,而且不会出现提示. </body>
如何在不刷新页面的情况下刷新css?
<style>
button{ color:#000000;}
</style>
<button nclick=document.styleSheets[0].rules[0].style.color=‘‘‘‘red‘‘‘‘>点击按钮直接修改style标签里button选择符使按钮改为红色</button>
请问如何让网页自动刷新?
在head部记入<META. HTTP-EQUIV="Refresh" c>其中20为20秒后自动刷新,你可以更改为任意值。
如何让页面自动刷新?
方法一,用refresh
HTML 代码片段如下:
<head>
<meta. http-equiv="refresh" c>
</head>
5表示刷新时间
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
方法二,使用setTimeout控制
<img src=/logo.gif>
<script>
function rl(){
document.location.reload()
}
setTimeout(rl,2000)
</script>
如何让超链接没有下划线
在源代码中的<HEAD>…</HEAD>之间输入如下代码:
<style. type="text/css"> <!--
a { text-decoration: none}
--> </style>
请问如何去掉IE的上下滚动条?
<body style=‘‘‘‘overflow:scroll;overflow-y:hidden‘‘‘‘>
</body>
怎样才能把RealPlayer文件在网页做一个试听连接?
<embed height=25 src=51js.rm type=audio/x-pn-realaudio-plugin width=50 autostart="false" c>
如何用html实现浏览器上后退按钮的功能?
<a href="java script.:history.go(-1)">点击后退</a>
或者
<script> history.back() </script>
请问怎么在网页中改变鼠标的箭头形状?
HTML 代码片段如下:
<body>
<a href="#" style="cursor: auto;">auto</a><br>
<a href="#" style="cursor: crosshair ">crosshair </a><br>
<a href="#" style="cursor: default ">default </a><br>
<a href="#" style="cursor: hand ">hand </a><br>
<a href="#" style="cursor: move ">move </a><br>
<a href="#" style="cursor: e-resize ">e-resize </a><br>
<a href="#" style="cursor: ne-resize ">ne-resize </a><br>
<a href="#" style="cursor: nw-resize">nw-resize</a><br>
<a href="#" style="cursor: n-resize">n-resize</a><br>
<a href="#" style="cursor: se-resize">se-resize</a><br>
<a href="#" style="cursor: sw-resize">sw-resize</a><br>
<a href="#" style="cursor: s-resize">s-resize</a><br>
<a href="#" style="cursor: w-resize">w-resize</a><br>
<a href="#" style="cursor: text">text</a><br>
<a href="#" style="cursor: wait">wait</a><br>
<a href="#" style="cursor: help">help</a><br>
</body>
怎样不使用页面的缓存?即每一次打开页面时不是调用缓存中的东西
<META. HTTP-EQUIV="
ragma" C>
页面打开时自动弹出一个窗口的代码怎么写?
HTML 代码片段如下:
<html>
<head>
<title>Untitled Document</title>
<meta. http-equiv="Content-Type" c>
<script. language="<B style="color:black;background-color:#A0FFFF">javascript</B>">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" >
</body>
</html>
如何让我的页面出现一个会讲话的小人?Merlin
HTML 代码片段如下:
<HTML>
<HEAD>
<TITLE>默林</TITLE>
<META. http-equiv=Content-Type c>
</HEAD>
<BODY>
<p><OBJECT id=sims classid=CLSID
45FD31B-5C6E-11D1-9EC1-00C04FD7081F>
</OBJECT>
<SCRIPT>
var MerlinID;
var MerlinACS;
sims.Connected = true;
MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS);
Merlin = sims.Characters.Character(MerlinID);
Merlin.Show();
Merlin.Play("Surprised");
Merlin.Speak("大家好");
Merlin.Play("GestureLeft");
Merlin.Think("我是默林!");
Merlin.Play("
leased");
Merlin.Think("可爱吗?");
Merlin.Play("GestureDown");
Merlin.Speak("哈哈!");
Merlin.Hide();
function LoadLocalAgent(CharID, CharACS){
LoadReq = sims.Characters.Load(CharID, CharACS);
return(true);
}
</SCRIPT>
</p>
<p> </p>
<p>看此效果必须装有office2000!!!</p>
</BODY>
</HTML>
在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
HTML 代码片段如下:
<html><head>
<STYLE>
body {background-image:url(logo.gif);
background-repeat:no-repeat; background-position:center }
</STYLE>
</head>
<body bgproperties="fixed" >
</body>
</html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
background-repeat:no-repeat; 是讓背景圖不占滿整個頁面
body bgproperties="fixed" 是拉動scroll時背景圖不動
文本输入框什么属性能实现不可输入?
HTML 代码片段如下:
<input type="text" name="textfield" disabled>
或者
<input type="text" name="textfield" readonly>
如何禁止自己的页面在别人的框架里打开?
把以下代码加至你的<head>区
<script>
if (window.top!=self){
window.top.location=self.location
}
</script>
如何实现首页全屏幕显示?
HTML 代码片段如下:
<html>
<body><script. language="<B style="color:black;background-color:#A0FFFF">javascript</B>">
var coolw=642
var coolh=400
var coolhuang=window.open("http://www.51js.com","coolhuang","width="+coolw+",height="+coolh+",
fullscreen=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0")
window.close()
</script></body></html>
如何监听一个窗口被关闭了?
HTML 代码片段如下:
<body >
如何禁止Ctrl+N?
HTML 代码片段如下:
<body nkeydown=return(!(event.keyCode==78&&event.ctrlKey))>
如何把页面加入用户的收藏夹?
HTML 代码片段如下:
<a href="<B style="color:black;background-color:#A0FFFF">javascript</B>:window.external.AddFavorite(‘‘‘‘http://www.51js.com‘‘‘‘,‘‘‘‘无忧脚本‘‘‘‘)">收藏无忧脚本</a>
如何在我的页面中加入背景音乐?
IE: <bgsound src="*.mid" loop=infinite>
NS:<embed src="*.mid" autostart=true hidden=true loop=true>
*.mid你的背景音乐的midi格式文件
关于页面转换效果
<meta. http-equiv="page-enter" c>
或
<meta. http-equiv="page-exit" c>
说明:Transition=23是随机效果,另可以选0-22任一数字固定某个效果
如何设定打开页面的大小
HTML 代码片段如下:
<body ><!--(width,height)-->
怎样双击滚屏,单击停止?
HTML 代码片段如下:
<html>
<head>
<title>新網頁1</title>
</head>
<body>
<script. language"<B style="color:black;background-color:#A0FFFF">javascript</B>">
var currentpos,timer;
function initialize()
{
timer=setInterval("scrollwindow()",10);
}
function sc(){
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos != document.body.scrollTop)
sc();
}
document.onmousedown=sc
document.ondblclick=initialize
</script>
<p>a</p><p>a</p><p>a</p><p>aa</p><p>aa</p><p>aa</p>
<p>aa</p><p>aa</p><p>aa</p><p>aa</p><p>aa</p><p>aa</p>
<p>aa</p><p>aa</p><p>aa</p><p>aa</p><p>aa</p><p>aa</p>
<p>aa</p><p>aa</p><p>aa</p><p>aa</p><p>a</p>
</body>
</html>
如何让body中的文字不被选中?
HTML 代码片段如下:
<body >aaa</body>
如何让弹出的窗口不能关闭?
在新开的窗口中加入如下代码
<body nunload=open(location.href)>
</body>
如何让浏览器在保存页面时保存失败?
HTML 代码片段如下:
<NOSCRIPT>
<<B style="color:black;background-color:#ffff66">IFRAME</B> SRC="*.html">
</<B style="color:black;background-color:#ffff66">IFRAME</B>>
</NOSCRIPT>
表单中如何用图片按钮实现 reset?
<html>
<head>
<script>
function aaa(){
document.forms[0].reset()
}
</script>
</head>
<body>
<form>
<textarea rows="2" name="S1" cols="20"></textarea>
<input type="submit" values="提交" name="B1">
<image src="logo.gif" nclick=aaa()>
</form>
</body></html>
进入网页时弹出的信息对话框
<body >
关闭窗口后弹出对话框
<body >
告别提示
<body nUnload= alert("再见,感谢你的访问!")>
只要你肯干,没有什么不能成功的.
1。忽视右键
<body ncontextmenu="return false">
或
<body style="overflow-y:hidden">
2。加入背景音乐
IE:<bgsound src="*.mid" loop=infinite>
NS:<embed src="*.mid" autostart=true hidden=true loop=true>
</embed>
*.mid你的背景音乐的midi格式文件
3。简单的window.open方法
<a href="#"
nclick="javascript:window.open(文件路径/文件名,newwindow,
toolbar=no,scrollbars=yes,resizable=no,top=0,left=0,
width=400,height=300);">文字或图片</a>
参数解释:
<SCRIPT. LANGUAGE="javascript"> js脚本开始;
window.open 弹出新窗口的命令;
文件路径/文件名 弹出窗口的文件名;
newwindow 弹出窗口的名字(不是文件名),非必须,可用空代替;
width=400 窗口宽度;
height=300 窗口高度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar,scrollbars 表示菜单栏和滚动栏。
resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
</SCRIPT> js脚本结束
4。简单的页面加密
<script. LANGUAGE="javascript">
<!--
function loopy(){
var sWord ="";
while(sWord!="login"){sWord=prompt("请输入你的登陆密码");}
alert("登陆成功!");
}
loopy()
//-->
</script>
5。拉动页面时背景图不动
<style>
body{background-image:url(logo.gif);
background-repeat:no-repeat;background-position:center}
</style>
6。让浏览器在保存页面时保存失败
<NOSCRIPT><iframe. src="*.html"></iframe></NOSCRIPT>
7。随机替换图片
<script>
document.write(<img src="img/+parseInt(Math.random()*(5))
+.gif"height="40" width="50">
</script>
图片文件名为0.gif 1.gif 2.gif 3.gif 4.gif
8。窗口定时关闭
先将如下代码网页文件的区:
<script. language="javascript">
function closeit() { setTimeout("self.close()",10000) //毫秒 }
</script>
然后再在<body>标内加入如:<body nload="closeit()">
9。网页自动关闭
<html>
<head>
<object id=closes type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<param name="Command" value="Close">
</object>
</head>
<body nload="window.setTimeout(closes.Click(),10000)">
这个窗口会在10秒过后自动关闭,而且不会出现提示.
</body>
</html>
10。网页自动刷新
在head部记入
<META. HTTP-EQUIV="Refresh" content="20">
其中20为20秒后自动刷新,你可以更改为任意值。
11。网页自动转页
<META. HTTP-EQUIV="Refresh" CONTENT="时间(秒);URL=地址">
12。保持layer在最前面,而不被Iframe、Object所覆盖
在Layer中再插Iframe. 或 Object 设z-Index值
<div z-Index:2><object xxx></object> # 前面
<div z-Index:1><object xxx></object> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px;
height:95px;z-index:2"> height=100% width=100%>
<iframe. width=0 height=0></iframe>
</div>
<div id="Layer1" style="position:absolute; top:50;width:200px;
height:115px;z-index:1">
<iframe. height=100% width=100%></iframe>
</div>
13。返回上一页
<a href=javascript:history.back(1)>『返回上一页』</a>
14。关闭窗口
<a href=javascript:self.close()>『关闭窗口』</a>
15。关于iframe的透明背景
<IFRAME. ID="iFrame1" SRC="iframe.htm"
allowTransparency="true"
style="background-color: green"></IFRAME>
16. ncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border ncontextmenu=return(false)><td>no</table> 可用于Table
17. <body nselectstart="return false"> 取消选取、防止复制
18.onpaste="return false" 不准粘贴
19.oncopy="return false;" ncut="return false;" 防止复制
20. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标
21. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标
22. <input style="ime-mode:disabled"> 关闭输入法
23. 永远都会带着框架
<script. language="JavaScript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页
// --></script>
24. 防止被人frame.
<SCRIPT. LANGUAGE=JAVASCRIPT><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
25. 网页将不能被另存为
<noscript><iframe. src=*.html></iframe></noscript>
26. 查看网页源代码
<input type=button value=查看网页源代码
onclick="window.location = "view-source:"+ "http://www.pconline.com.cn"">
27.删除时确认
<a href="javascript:if(confirm("确实要删除吗?"))location="boos.asp? &areyou=删除&page=1"">删除</a>
28.屏蔽功能键Shift,Alt,Ctrl
<script>
function look(){
if(event.shiftKey)
alert("禁止按Shift键!"); //可以换成ALT CTRL
}
document.onkeydown=look;
</script>
29. 网页不会被缓存
<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">
30.怎样让表单没有凹凸感?
<input type=text style="border:1 solid #000000">
或 <input type=text style="border-left:none; border-right:none; border -top:none; border-bottom: 1 solid #000000"></textarea>
31.不要滚动条?
让竖条没有:
<body style="overflow:scroll;overflow-y:hidden">
</body>
让横条没有:
<body style="overflow:scroll;overflow-x:hidden">
</body>
两个都去掉?更简单了
<body scroll="no">
</body>
32.怎样去掉图片链接点击后,图片周围的虚线?
<a href="#" nFocus="this.blur()"><img src="logo.jpg" border=0></a>
33.电子邮件处理提交表单
<form. name="form1" method="post" action="mailt****@***.com" enctype="text/plain">
<input type=submit>
</form>
34.在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()
35.如何设定打开页面的大小
<body nload="top.resizeTo(300,200);">
打开页面的位置<body nload="top.moveBy(300,200);">
36.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
<STYLE>
body
{background-image:url(logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</STYLE>
37. 检查一段字符串是否全由数字组成
<script. language="Javascript"><!--
function checkNum(str){return str.match(//D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>
38. 获得一个窗口的大小
document.body.clientWidth; document.body.clientHeight
39. 怎么判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");
else alert("全是字符");
40.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 npropertychange="this.style.posHeight=this.scrollHeight">
</textarea>
41. 日期减去天数等于第二个日期
<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>
42. 选择了哪一个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" nclick="checkme()">
</BODY></HTML>
43.脚本永不出错
<SCRIPT. LANGUAGE="JavaScript">
<!-- Hide function killErrors(){return true;} window.onerror = killErrors; // -->
</SCRIPT>
44.ENTER键可以让光标移到下一个输入框
<input nkeydown="if(event.keyCode==13)event.keyCode=9">
45. 检测某个网站的链接速度:
把如下代码加入<body>区域中:
<script. language=Javascript>
tim=1
setInterval("tim++",100)
b=1
var autourl=new Array()
autourl[1]="www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]="www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]="www.cctv.com"
function butt(){
document.write("<form. name=autof>")
for(var i=1;i<autourl.length;i++)
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=1;i<autourl.length;i++)document.write("<img src=http://"+autourl+"/"+Math.random()+" width=1 height=1 nerror=auto("http://"+autourl+"")>")}
run()</script>
46. 各种样式的光标
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
47、禁止鼠标右键,把Demo的图片全都设为表格的背景,表格的大小与图片的大小一样。这样做看起来是一样的,主要是防止鼠标经过图片时会出现另存的按钮。禁止鼠标右键的代码很简单:<script. LANGUAGE="JavaScript"> function click() { if (event.button==2) {alert('呵呵,不好意思,你甭想使用右键下载图片:)'); } } document.onmousedown=click</script>
1. 怎 样 定 义 网 页 语 言( 字 符 集)?
----在 制 作 网 页 过 程 中, 你 首 先 要 定 义 网 页 语 言, 以 便 访 问 者 浏 览 器 自 动 设 置 语 言, 而 我 们 用 所 见 即 所 得 的HTML 工 具 时, 都 没 有 注 意 到 这 个 问 题, 因 为 它 是 默 认 设 置。 要 设 置 的 语 言 可 以 在HTML 代 码 状 态 下 找 到:
$#@60; meta http -equiv="Content Type" content="text/html; charset=gb2312" $#@62;
----把charset=gb2312 改 换 成 其 它 语 言 代 码 即 可, 比 如 英 文:charset=en.
2. 怎 样 防 止 别 人 把 你 的 网 页 放 到 框 架 里?
----因 为 框 架(frame) 的 缘 故, 有 许 多 人 把 别 人 的 网 页 放 置 到 自 己 的 框 架 里, 使 之 成 为 自 己 的 一 页。 如 果你 要 防 止 别 人 这 样 做, 可 以 加 入 下 列JavaScript 代 码 即 可, 它 会 自 动 监 测, 然 后 跳 出 别 人 的 框 架。
$#@60; script language="javascript" $#@62;
??if (self != top) { top.location = self.location; }
$#@60; /script $#@62;
3. 怎 样 设 置 字 体?
----在 制 作 网 页 过 程 中, 大 家 都 喜 欢 使 用 漂 亮 的 字 体。 但 是, 如 果 访 客 浏 览 器 没 有 安 装 同 样 的 字 体, 看 到你 的 网 页 会 是 很 普 通 的 字 体。 如 何 防 止 这 种 情 况 出 现 呢? 大 家 知 道 字 体 设 置 的 标 签 是Font, 而 它 有 个 属性 是Face, 该 属 性 是 定 义 字 体 的, 你 可 以 这 样 设 置:, 访 客 的 浏 览 器 就 会 按 照Face 定 义 的 字 体 顺 序 设 置 已 安装 的 字 体。 目 前 动 态 主 页 有 种 技 术, 可 以 把 字 体 信 息 用 向 量 格 式 存 储, 然 后 利 用 访 客 本 身 机 器 含 有 的 公共 信 息 库 把 字 体 快 速 的 组 装 起 来, 这 样, 就 不 用 担 心 访 客 是 否 安 装 有 某 种 字 体 了。
4. 怎 样 在 网 页 中 加 入 注 释?
----在 共 同 开 发 网 页 中, 加 入 注 释 是 防 止 分 工 被 搞 混 淆 或 者 注 释 某 段 代 码 特 殊 的 含 加 入 注 释 的 格 式 是:
$#@60; ! - - Microsoft FrontPage 3.0 - - $#@62;。
5. 怎 样 测 试 浏 览 器 并 自 动 装 入 所 需 要 的 网 页?
----目 前 微 软 和 网 景 的 浏 览 器 并 不 能 完 全 兼 容 所 有 网 页, 有 的 在 某 种 浏 览 器 里 非 常 漂 亮, 而 用 其 它 浏 览 器查 看 时 却 一 团 糟。 如 果 你 需 要 测 试 浏 览 器, 可 以 加 入 以 下JavaScript 代 码 并 保 存 单 独 一 个 网 页:
$#@60; script LANGUAGE="JavaScript" $#@62;
function TestBrowser(){
ie = ((navigator.appName ==
"Microsoft Internet Explorer") & &
(parseInt(navigator.appVersion) $#@62;= 3 ))
ns = ((navigator.appName == "Netscape") & &
(parseInt(navigator.appVersion) $#@62;= 3 ))
if (ns) {
setTimeout(location.href="nn4.htm",10);
} else {
setTimeout(location.href="ie4.htm",10);
}
}
$#@60; /script $#@62;
实 例 请 参 考:
http://www.netease.com/~tiantao/test.htm
6. 怎 样 让 链 接 没 有 下 划 线?
----只 要 在 加 入 以 下 代 码, 所 有 链 接 就 都 没 有 下 划 线 了:
$#@60; style type="text/css" $#@62;
$#@60; ! - -
A{text -transform: none;
text -decoration: none ;}
a:hover { text -decoration:underline }
- - $#@62;
$#@60; /style $#@62;
7. 怎 样 在 网 页 中 加 入E-mail 链 接 并 显 示 预 定 的 主 题?
A HREF=mailto:lovett@163.net?subject=test
8. 怎 样 让 背 景 图 像 不 滚 动?
----Internet Explorer 浏 览 器 支 持 一 个Body 属 性Bgproperties, 它 可 以 让 背 景 不 滚 动。
$#@60; Body Background="c98.gif" Bgproperties="fixed" $#@62;
9. 怎 样 评 定 网 页 的 级 别?
----在IE4.0 浏 览 器 中, 有 一 项 功 能 是 过 滤 网 站 的, 一 些 受 限 制 的 网 站 被 过 滤 掉, 而 该 网 站 必 须 被RSAC( 美 国娱 乐 委 员 会) 评 定 了 级 别IE4.0 才 能 过 滤, 如 果 你 要 评 级 可 以 在 网 页 中 加 入 以 下 代 码:
$#@60; meta http -equiv="PICS -Label"????
content=(PICS -1.1 "http://www.rsac.org/ratingsv01.html"
??l gen true comment "RSACi North America Server"
??for "http://youHostname"
??on "1998.11.26GMT08:15 ?0500"
??r (n 0 s 0 v 0 l 0))$#@62;
10. 怎 样 定 义 本 网 页 的 关 键 字?
----在 网 页 中 加 入 关 键 字, 可 以 供 某 些 搜 索 站 台 机 器 人 的 使 用, 它 们 会 利 用 该 关 键 字 为 你 的 网 站 做 索 引, 这样, 当 别 人 用 关 键 字 搜 索 网 站 时, 如 果 你 的 网 页 包 含 该 关 键 字, 那 么 就 可 以 被 列 出 了, 定 义 本 网 页 关 键 字, 可 以 加 入 以 下 代 码:
----$#@60; meta name="Keywords" content="china,enterprise,business,net" $#@62;
----Content 所 包 含 的 就 是 关 键 字, 你 可 以 自 行 设 置。
----这 里 有 个 技 巧, 你 可 以 重 复 某 一 个 单 词, 这 样 可 以 提 高 自 己 网 站 的 排 行 位 置, 如:
----$#@60; meta name="Keywords" CONTENT="china,china,china,china" $#@62;
11. 怎 样 链 接 本 网 页 的 对 象?
----有 时 链 接 发 生 在 一 个 网 页 里, 比 如 页 面 上 半 部 分 列 出 了 目 录, 下 部 分 就 列 出 了 内 容, 而 单 击 目 录 任 何 一个 项 目 都 可 以 跳 到 指 定 部 分, 可 以 在 要 被 链 接 的 内 容 部 分 设 置 如 下 方 式:
$#@60; A NAME=" #t1" $#@62;$#@60; /A $#@62;
而 要 链 接 到 以 上 设 置 的 部 分, 可 以 如 下 编 制:
$#@60; A HREF="index.htm #t1" $#@62;t1$#@60; /A $#@62;
12. 怎 样 为 不 支 持 框 架 结 构 的 浏 览 器 指 定 内 容?
----为 了 防 止 不 支 持 框 架 结 构 的 浏 览 器 访 问 你 的 网 页, 可 以 在 你 的 网 页 中 加 入 以 下 内 容:
$#@60; body $#@62;
$#@60; noframes $#@62;
本 网 页 是 框 架 结 构, 请 下 载 新 的 浏 览 器 浏 览
$#@60; /noframes $#@62;
$#@60; /body $#@62;
13. 怎 样 删 除 表 格 边 框?
----有 时 需 要 删 除 表 格 的 边 框, 你 可 以 把Border 设 置 为 如 下 代 码:
$#@60; body $#@62;
$#@60; table border="0" width="100 %" $#@62;
$#@60; tr $#@62;
$#@60; td width="100 %" $#@62;$#@60; /td $#@62;
$#@60; /tr $#@62;
$#@60; /table $#@62;
$#@60; /body $#@62;
14. 怎 样 隐 藏 在 状 态 栏 里 出 现 的LINK 信 息?
----大 家 知 道, 当 你 指 向 一 个 链 接 时, 该 链 接 的 信 息 会 出 现 在 浏 览 器 状 态 栏 里, 如 果 需 要 隐 藏 信 息, 可 以 如 下设 置:
$#@60; a href="http://c98.yeah.net" onMouseOver="window.status=none ;
return true" $#@62;test$#@60; /a $#@62;
15. 怎 样 在 网 页 中 加 入 多 媒 体 文 件?
----有 些 多 媒 体 文 件 无 需 其 他 程 序 就 可 以 播 放, 而 有 许 多 多 媒 体 文 件 需 要 外 部 程 序 的 帮 助, 当 浏 览 器 下 载不 支 持 的 格 式 时 会 调 用 外 部 程 序。 如 果 浏 览 器 没 有 安 装 这 种 外 部 程 序, 那 么 浏 览 器 会 自 动 去 下 载; 如 果你 需 要 加 入 多 媒 体 格 式, 可 设 置 如 下 代 码:
$#@60; EMBED SRC="tt.ram" AUTOSTART="TRUE" LOOP="2" WIDTH="80" HEIGHT="30" $#@62;
----对 于 不 支 持EMBED 标 签 的 浏 览 器, 可 以 改 用 标 签。
16. 怎 样 在 网 页 中 加 入 电 子 邮 件 表 单 提 交?
----表 单 提 交 需 要CGI 程 序 的 支 持, 但 你 也 可 以 利 用E ?mail 提 交, 当 你 设 计 好 表 单 后, 把Action 内 容 加 入 邮 件地 址 即 可, 如 下:
form method="POST" action="mailto:lovett@163.net" ENCTYPE="text/plain"$#@62;
17. 怎 样 隐 藏 热 讯 分 析 的 图 标?
----热 讯 分 析 是 许 多 网 友 使 用 的 服 务, 它 能 帮 助 你 分 析 网 站 的 流 量, 如 果 你 想 隐 藏 该 服 务 图 标, 可 以 把 服 务代 码 中 的 width=88 height=31 都 改 为1 即 可。
18. 怎 样 在 网 页 中 加 入 最 后 修 改 日 期?
----在 中 加 入 以 下 代 码 即 可:
$#@60; Script Language="Java Script" $#@62;
document.write
(" 最 后 修 改 日 期" +document.lastModified);
$#@60; /Script $#@62;
内容是《Web前端开发之Javascript视频》的课件,请配合大师哥《Javascript》视频课程学习。
错误处理对于web应用开发至关重要,任何javascript错误都有可能会导致网页无法使用,因此作为开发人员,必须要及时处理有可能出现的错误;
从IE4.0之后,几乎所有的浏览器都包含了一些基本的错误处理功能,但并没有统一,后来,由ECMAscript添加了异常处理机制,也就是try…catch…finally结构以及throw操作;
错误处理的重要性: 好的错误处理技术可以让脚本的开发、调试和部署更加流畅,能对代码进行更好的控制;另外,JS缺乏标准的开发环境;
错误类型:
语法错误(syntax error):也称为解析错误,发生在传统编程语言的编译解释时;发生语法错误时,就会发生阻塞,也就是不能继续执行代码,但只是同一个线程中的代码会受影响,其他线程中的代码不受影响;
// Uncaught SyntaxError: Invalid or unexpected token
// 未捕获的语法错误:无效或意外的标记
document.write("zeronetwork;
运行时错误(Runtime error):也称为exception异常, 其发生在编译期/解释期后,此时,问题并不出现在代码的语法上,而是在尝试完成一个非法的操作;
<input type="button" value="单击" onclick="handleClick()" />
<script>
// Uncaught ReferenceError: openMy is not defined
// 未捕获的引用错误:未定义openMy
function handleClick(){
openMy();
}
</script>
错误报告:
因为每个浏览器都有自己的内置Javascript解释程序,所以每种浏览器报告错误的方式都不同;有些是弹出错误信息,有些是把信息打印在控制台中;
IE(windows): 默认情况下,会弹出包含错误细节的对话框,并询问是否继续执行页面上的脚本;如果浏览器有调试器(如:Microsoft Script Debugger) ,此对话框会提供一个是调试还是忽略的选项;如果在IE设置中取消了”显示错误”,那么会在页面左下角显示一个黄色的图标;
注:如果JS代码就在HTML里,显示错误行是正确的,如果是外部的JS文件,则行号往往差一行,如第5行则为第4行;
Mozilla(所有平台): 在控制台中打印错误信息,并发出警告;其会报告三种类型的消息:错误、严格警告和消息等的;
Safari (MacOS):是对JavaScript错误和调试的支持最差,默认情况下,它对终端用户不提供任何javascript错误报告;
错误处理:
Javascript提供了两种处理错误的方式:
onerror事件处理函数:
window对象的onerror属性是一个事件处理程序,页面上出现异常时,error事件便在window对象上触发,并把错误消息输出到Javascript控制台上,这种方式也称为全局错误捕获;如:
window.onload = function(){
show(); // 在onload事件中调用了一个不存在的函数
}
window.onerror = function(){
alert("出现错误");
return true;
}
获取错误信息:
window.onerror事件处理程序在调用时可以传5个参数,由这5个参数可以获取详细的错误信息;
window.onerror = function(sMessage, sUrl, sLine, sColumn, error){
console.log("Error:" + sMessage + " URL:" + sUrl + " Line:" + sLine + " Column:" + sColumn);
console.log(error);
return true;
}
onerror处理程序的返回值:
如果返回true,则阻止执行默认的事件处理程序,也就是将通知浏览器,事件处理程序已经处理了错误,不需要其他操作,反之会显示错误消息;
某些元素也支持onerror; 但其处理函数没有任何关于error信息的参数,如:
document.images[0].onerror = function(event){
console.log(event); // Event
console.log(event.type); // error
}
这里的event参数是一个类型为Event事件对象,其存储的信息除了type返回了error,并没有其他和错误相关的信息;
全局错误处理window.onerror通常不能恢复脚本继续执行,但会给开发者发送错误信息;
window.onerror = function(error){
console.log(error);
}
show();
console.log("中止,不会被执行");
window.onload = function(){
console.log("也不会被执行");
}
可以是简单的打印,也可以把错误保存到日志记录里;
window.onerror就是绑定在window对象的error事件,也可以使用标准的添加事件侦听的方式window.addEventListener(eventtype, handler),其需要两个参数,eventtype为事件类型,在此为error,handler是事件处理函数,其需要一个参数event,一个ErrorEvent类型的对象,其保存着有关事件和错误的所有信息,如:
window.addEventListener("error", function(event){
console.log(event); // ErrorEvent
console.log(event.error); // Error对象
console.log(event.error.name);
console.log(event.error.message);
console.log(event.error.stack);
console.log(event.lineno); // 行
console.log(event.colno); // 列
console.log(event.filename);
});
在实际的开发中,这两种方式都会被使用,只不过addEventListener有定的兼容必问题,所以要兼顾所有的浏览器且不太关注事件对象本身的话,就使用window.onerror;
当加载自不同域的脚本中发生语法错误时,为避免信息泄露,语法错误的细节将不会报告,只会返回简单的"Script error.";
<script>
window.onerror = function(msg, url, lineNo, columnNo, error){
console.log(msg); // Script error
console.log(url); // ""
console.log(lineNo); // 0
console.log(columnNo); // 0
console.log(error); // null
}
</script>
<script src="https://www.zeronetwork.cn/demo/demo.js"></script>
可以针对同域和不同域的错误分开处理,如:
<script>
window.onerror = function(msg, url, lineNo, columnNo, error){
var str_error = msg.toLowerCase();
var sub_string = "script error";
if(str_error.indexOf(sub_string) > -1)
alert("脚本发生错误,详情请在控制台查看");
else{
var message = [
'消息:' + msg,
'URL:' + url,
'行:' + lineNo,
'列:' + columnNo,
'错误对象:' + error
].join(" - ");
alert(message);
}
}
show();
</script>
<script src="https://www.zeronetwork.cn/demo/demo.js"></script>
从上在的执行结果来看,error事件执行了两次,原因是使用了两个script,也就是当一个script有错误发生时,它只会阻止当前的script块,而不会阻止其他的script块;如:
<script>
show(); // 会捕获
console.log("不会被执行");
myshow(); // 不会捕获
</script>
<script src="https://www.zeronetwork.cn/demo/demo.js"></script>
<script>
console.log("执行了");
demo(); // 会捕获
console.log("不会被执行");
</script>
body元素的onerror特性,也可以充当事件处理函数,如:
<body onerror="alert('出现了错误');return true;">
注意,先注释掉window.onerror等代码;
此时,可以直接使用event、source、lineno、colno、error等属性;
<body onerror="alert(event + '\n' + source + '\n' + lineno + '\n' + colno + '\n' + error);return true;">
当然了,也可以为body绑定error事件,此时各属性,必须明确指定,如:
document.body.onerror = function(msg, url,lineno,colno,error){
alert(msg + '\n' + url + '\n' + lineno + '\n' + colno + '\n' + error);
return true;
}
try-catch语句:
try语句中为期待正常执行的代码块,当在try语句中发生错误,其余代码会中止执行,catch语句就处理该错误,如果没有错误,就跳过catch语句;try和catch必须成对出现;
try{
//code
[break]
}catch([exception]){
//code
}[finally]{
//code
}
// 如
try {
show();
alert("不能执行");
} catch (error) {
alert("出现一个错误:" + error);
} finally{
alert("管你呢");
}
try语句块内的错误只会中止try语句块中发生错误之后的逻辑代码,并不会中止整个脚本的运行;执行try-catch语句,必须是运行时,运行时错误,也被称为异常;try-catch语句中指定只能有一个catch子句;try-catch语句适合处理无法预知、无法控制的错误;finally常被用于无论结果是否有异常,都要执行的代码,如:
try{
alert("try");
show();
alert("no exec");
}catch(error){
alert("catch");
}finally{
alert("finally");
}
alert("continute");
代码执行的两条路径:如果没有异常,执行路径为:try->finally,反之为:try的部分->catch->finally;
一般用于关闭打开的链接和释放资源;
var connection = {open: function(){},close: function(){},send: function(data){}}
// var data = "大师哥王唯"; // 注释这一行,让它产生异常
connection.open();
try{
connection.send(data);
}catch(exception){
console.log("出现一个错误");
}finally{
connection.close();
console.log("关闭了");
}
还有一个典型的应用,读写文件,如:
function openFile(){};
function writeFile(data){};
function closeFile(){};
openFile();
try{
writeFile();
}catch(error){
console.log(error);
}finally{
closeFile();
}
在try-catch-finally语句块中的变量是全局变量:
try{
var name = "王唯";
show();
var city = "蚌埠";
}catch(error){
var age = 18;
console.log(name);
}finally{
var sex = "男";
console.log(name);
console.log(age);
}
console.log(name);
console.log(city);
console.log(age);
console.log(sex);
try-catch-finally与return:
如果直接在try-catch-finally语句块中执行return,会抛出异常,如:
try {
console.log("try");
// return; // Illegal return statement 非法返回语句
console.log("try agin");
} catch (error) {
console.log(error);
// return; // Illegal return statement
}finally{
console.log("finally");
// return; // Illegal return statement
}
如:
function foo(){
try {
console.log("try");
return 1;
show();
console.log("try agin");
} catch (error) {
console.log(error);
return 2;
}finally{
console.log("finally");
return 3;
}
}
console.log(foo()); // 3
try-finally:
没有catch从句,只有try-finally也可以,目的是,只确保执行开始和最终的过程,而不处理错误,如:
try{
console.log("try");
show();
}finally{
console.log("finally"); // 会执行
}
console.log("over"); // 不会执行,已中止
但此时,还是会抛出异常的,但此时,会在执行完finally后中止执行,并会查找外部的catch语句;
嵌套try-catch语句:
在catch子句中,也有可能会发生错误,所以就可以使用嵌套的try-catch语句,如:
try {
show();
console.log("不能执行");
} catch (error) {
console.log("出现一个错误:" + error);
try {
var arr = new Array(10000000000000000);
arr.push(error);
} catch (error) {
console.log("又出现了一个错误:" + error);
}
} finally{
console.log("管你呢");
}
也可以在try中嵌套try-catch-finally语句,如:
try{
try{
console.log("try");
show();
}catch(error){
console.log("error");
}finally{
console.log("finally");
}
}catch(error){
console.log(error);
}
一个比较典型的应用,就是处理json数据,如:
// var json = '{"name":"wangwei", "age": 18, "sex": "男"}';
var json = '{bad json}'; // Uncaught SyntaxError
var data = JSON.parse(json);
console.log(data.name);
console.log(data.age);
console.log(data.sex);
一量json数据发生错误,整个应用都会崩溃,所以应该使用try-catch,如:
<div id="msg">您的信息:</div>
<script>
window.onload = function(){
var msg = document.getElementById("msg");
try{
// var json = '{"name":"王唯", "age": 18, "sex": "男"}';
var json = '{bad json}'; // Uncaught SyntaxError
var data = JSON.parse(json);
msg.innerHTML += "姓名:" + data.name + ",年龄:" + data.age + ",性别:" + data.sex;
}catch(error){
msg.innerHTML = "开小差了,找不到你的信息";
}
}
</script>
当使用了try-catch语句,就不会将错误提交给浏览器,也就不会触发error事件,如:
window.onerror = function(error){
console.log(error); // 不会触发
}
try{
show();
}catch(error){
console.log(error);
}
Error错误对象:
在catch中会捕获一个Error错误对象;该对象在Javascript解析或运行时,一旦发生错误,引擎就会抛出这个对象;如果没有相关联的try-catch捕获该对象,就由浏览器输出这个对象;
// ...
console.log("错误:" + error + " name:" + error.name + " message:" + error.message);
也可以通过Error的构造器创建一个错误对象,这个Error对象也可用于用户自定义的异常;语法:new Error([message[, filename[, lineNumber]]]);
实例化Error对象,也可以不使用new关键字,如:
var error = new Error("自定义错误对象");
var error = Error("不使用new");
console.log(error);
console.log(error.name); // Error
console.log(error.message); // 自定义错误对象
Error错误对象属性:
Error类还有6个子类,其可以通过错误对象的name属性返回具体异常类的名称:
// EvalError
try{
throw new EvalError("Eval异常");
}catch(error){
console.log(error);
console.log(error instanceof EvalError); // true
console.log(error.name); // EvalError
console.log(error.message); // Eval异常
}
// RangeError
var num = 1;
try{
num.toPrecision(500); // [prɪˈsɪʒn] 精度
}catch(error){
console.log(error);
}
// ReferenceError
var x;
try {
x = y + 1;
} catch (error) {
console.log(error);
}
// SyntaxError
try{
eval("alert('wangwei)");
}catch(error){
console.log(error);
}
// TypeError
var num = 1;
try{
num.toUpperCase(); // 无法将数字转为大写
}catch(error){
console.log(error);
}
// URIError (malformed [ˌmælˈfɔːmd]格式不正确,畸形的)
try{
decodeURI("%%%"); // 使用了非法字符
}catch(error){
console.log(error);
}
Error对象的message属性是浏览器生成的用于表示错误描述的信息,因为这个属性是特定于浏览器的,所以不同的浏览器上可能产生不同的错误信息,如:
try {
eval("a ++ b");
show();
console.log("执行了吗?");
} catch (error) {
// SyntaxError:Unexpected identifier或
// SyntaxError:unexpected token: identifier
console.log(error.name + ":" + error.message);
}
使用name属性判断错误类型:
try {
eval("a++b");
} catch (error) {
console.log(error instanceof SyntaxError); // true
if(error.name == "SyntaxError")
console.log(error.name + ":" + error.message);
else
console.log("未知错误:" + error.message);
}
抛出异常:
throw语句的作用是手动中断程序执行,抛出一个错误,一般用于有目的的抛出异常,也就是允许开发者可以创建自定义错误;
throw可以抛出任何类型的值,也就是说,它的参数可以是任何值;语法:throw error_object;error_object可以是字符串、数字、布尔或对象;
throw "出现一个错误";
throw 50666;
throw true;
throw new Object();
throw {
toString:function(){
return 'Error!';
}
}
function getRectArea(width, height){
if(isNaN(width) || isNaN(height))
throw '参数应该是number类型';
return width * height;
}
getRectArea("wangwei",10);
对于Javascript引擎来说,只要遇到throw语句,程序就会终止;
也可以抛出一个Error错误对象;Error对象的构造函数只有一个参数,
throw new Error("请再次尝试");
其他Error子类对象也可以抛出:
throw new SyntaxError("...");
throw new TypeError("...");
throw new RangeError("...");
throw new EvalError("...");
throw new URIError("...");
throw new ReferenceError("...");
对于Error类和其子类来说,错误对象的name就是其构造函数的名称,message是其构造函数的参数;
当抛出异常后,throw之后的语句将不会执行,并跳到相关联的catch语句中进行处理,如:
<h1>请输入18-99之间的数字</h1>
<input id="txtInput" type="text" />
<button id="btn">确定</button>
<p id="msg"></p>
<script>
function myFun(){
var msg,x;
msg = document.getElementById("msg");
msg.innerHTML = "";
x = document.getElementById("txtInput").value;
try{
if(x == "") throw "空的";
if(isNaN(x)) throw "不是数字";
x = Number(x);
if(x < 18) throw "太小";
if(x > 99) throw "太大";
msg.innerHTML = "输入的值正确:" + String(x);
}
catch(error){
msg.innerHTML = "输入的值不正确:" + error;
}
}
var btn = document.getElementById("btn");
btn.onclick = myFun;
</script>
也可以在某个语句块的外部捕获throw异常,如:
function sum(a,b){
if(arguments.length < 2)
throw new Error("需要两个参数");
else
return a + b;
}
try{
console.log(sum(18));
}catch(error){
// Error:需要两个参数
console.log(error.name + ":" + error.message);
}
可以通过instanceof判断异常的类型来特定处理某一类的异常,例如可以区分浏览器抛出的异常和开发人员抛出的异常,如:
function sum(a,b){
if(arguments.length < 2)
throw new Error("需要两个参数");
if(isNaN(a) || isNaN(b))
throw "参数是不是Number类型";
return a + b;
}
try{
console.log(sum(18,12));
}catch(error){
if(error instanceof SyntaxError)
console.log("语法错误:" + error.name + ":" + error.message);
else if(error instanceof Error)
console.log(error.name + ":" + error.message);
else
console.log(error);
}
注:判断Error类型要放到if的最后一个条件;
即使在catch语句中,还可以根据实际情况,再次抛出异常,此时,其可以被外部的try-catch语句块捕获(如果存在的话);
当发生异常时,代码会立即停止,仅当有try-catch语句捕获到异常时,代码才会继续执行;其背后运行的原理是,当发生异常,JavaScript解释器会立即停止执行的逻辑,并跳转到就近的try-catch异常处理程序,如果发生异常的代码块中没有相关联的catch从句,解释器会检查更高层的闭合代码块,看它是否有相关联的异常处理程序,以此类推,直到找到一个异常处理程序为止;如果发生异常的函数中没有处理它的try-catch语句,异常将向上传播到调用该函数的代码,如此,异常就会沿着Javascript的语法结构或调用栈向上传播;如果没有找到任何异常处理程序,JavaScript将把异常当成程序错误来处理,并通过浏览器报告给用户;
自定义错误类型:
可以基于Error类来创建自定义的错误类型,此时可以使用throw抛出自定义的异常类,或通过instanceof来检查这个异常类的类型,新类型需要实现name和message属性;
function CustomError(message){
this.name = "CustomError";
this.message = message || 'Default Message';
this.stack = (new Error()).stack;
}
// CustomError.prototype = new Error();
// 或者
CustomError.prototype = Object.create(Error.prototype);
CustomError.prototype.constructor = CustomError;
try{
var name = "jingjing";
if(name !== "wangwei")
throw new CustomError("自定义的错误类型");
}catch(error){
console.log(error.message);
}
小示例:
function UserException(message){
this.name = "UserException";
this.message = message;
}
function getMothName(m){
m = m - 1; // 调整月份数字到数组索引(1=Jan,12=Dec)
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
if(months[m] != undefined)
return months[m];
else
throw new UserException("Invalid Month No");
}
try{
var myMonth = 15;
var monthName = getMothName(myMonth);
}catch(error){
var monthName = "未知";
console.log(error.name + ":" + error.message);
}
小示例:验证电话号码,如:
function Telephone(num){
num = String(num);
var pattern = /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
if(pattern.test(num)){
this.value = num.match(pattern)[0];
this.valueOf = function(){
return this.value;
};
this.toString = function(){
return String(this.value);
}
}else{
throw new TelephoneFormatException(num);
}
}
function TelephoneFormatException(value){
this.name = "TelephoneFormatException";
this.message = "电话号码格式不正确";
this.value = value;
this.toString = function(){
return this.value + ":" + this.message;
}
}
// 应用
var TELEPHONE_INVALID = -1;
var TELEPHONE_UNKNOWN_ERROR = -2;
function verifyTelephone(num){
try{
num = new Telephone(num);
}catch(error){
if(error instanceof TelephoneFormatException)
return TELEPHONE_INVALID;
else
return TELEPHONE_UNKNOWN_ERROR;
}
return num.toString();
}
console.log(verifyTelephone("010-66668888"));
console.log(verifyTelephone("13812345678"));
console.log(verifyTelephone("138123456")); // -1
console.log(verifyTelephone("wangwei")); // -1
常见错误:
由于javaScript是松散类型的,也不会验证函数的参数,因此错误只会在运行时出现;一般来说,需要关注三种错误:类型转换错误、数据类型错误、通信错误;
类型转换错误:
一般发生在使用某个操作符,或者使用其他可能自动转换值的数据类型的语言结构时;
function output(str1,str2,str3){
var result = str1 + str2;
if(str3)
result += str3;
return result;
}
console.log(output(1,2,3));
console.log(output(1,2));
console.log(output(1,2,0));
console.log(output(1,2,"wangwei"));
这就是一个非常典型的与期望不一致的方式;
数据类型错误:
在流控制语句中使用非布尔值,是极为常见的一个错误来源,为避免此类错误,就要做到在条件比较时确定传入的是布尔值,例如,把if语句改成:if(typeof str3 == 'number');
所以在使用某个变量或对象时,一定要适当地检查它的数据类型,如:
function reverseSort(values){
// if(values){
// values.sort();
// values.reverse();
// }
if(arguments.length > 0){
if(!Array.isArray(values))
return [];
else{
values.sort();
values.reverse();
return values;
}
}
return [];
}
var arr = [3,2,6,9,4];
// var arr = 100; // Uncaught TypeError: values.sort is not a function
console.log(reverseSort(arr));
另一个常见的错误就是将参数与null值进行比较。与null进行比较只能确保相应的值不是null和undefined。要确保传入的值有效,仅检测null值是不够的;
function reverseSort(values){
// if(values != null){ // 任何非数组值都会导致错误
if(values instanceof Array) // 非数组值被忽略
values.sort();
values.reverse();
}
return values;
}
var arr = [3,2,6,9,4];
// var arr = 100; // Uncaught TypeError: values.sort is not a function
console.log(reverseSort(arr));
// 或
function reverseSort(values, fun){
if(values instanceof Array){
if(fun != null && typeof fun === "function")
values.sort(fun);
else
values.sort();
}
return values;
}
var arr = [3,2,6,9,4];
console.log(reverseSort(arr, function(a,b){
return a > b ? -1 : 1;
}));
通信错误:最典型的就是Ajax应用,用其可以动态加载信息,但是,javascript与服务器之间的任何一次通信,都有可能会产生错误;
调试技巧:
使用警告框: 这是最简单、流行的方式,如:
function test(){
alert("函数内");
var iNum1 = 5, iNum2 = 10;
alert(iNum1);
var iResult = iNum1 + iNum2;
alert(iResult);
}
test();
抛出自定义错误:
function assert(bCondition, sErrorMessage){
if(!bCondition)
throw new Error(sErrorMessage);
}
function divide(iNum1, iNum2){
assert(arguments.length == 2, "divide需要两个参数");
assert((!isNaN(iNum1) && !isNaN(iNum2)), "需要Number类型");
return iNum1 / iNum2;
}
console.log(divide(10,2));
console.log(divide(10,"c")); // 异常
// 或
try{
console.log(divide(10,"c"));
}catch(error){
console.log(error.name + ":" + error.message);
}
Javascript校验器:
jslint的主要目的是指出不合规范的js语法和可能的语法错误,包括一些不良代码;官网:http://www.jslint.com/
如以下,会给出警告:
调试器:
Javascript自身不具备调试器,但目前所有的浏览器可以使用自身的调试器;
IE调试:
启用IE的调试功能:
菜单“工具”|“Internet选项”命令,打开“Internet选项”对话框,在“高级”选项卡中,找到两个“禁用脚本调试”复选框并取消;开始调试,调试的主要工作是反复地跟踪代码,找出错误并修正;
设置断点:
在调试程序窗口中,将光标移动到需要添加断点的行上,按一次F9键或单击,当前行的背景色变为红色,并且在窗口左边界上标上红色的圆点,当程序运行到断点时就会暂停;
运行调试:
单击继续或按F5进行逐步运行调试;F10步进、F11步入,都可以继续向下执行;将鼠标移动到变量名上时,会显示变量当前时刻的值;或者在右侧的“监视”窗格中可以观察该变量的值;点击变量信息框中的变量值或右侧“监视”空格中的变量值可以修改变量的当前值;更多的调试操作:查看调用关系、监视特定变量的值等;
// 示例
var balance = 200.0; //
var willPay = 20.0;
function pay(_balance, _pay){
return _balance - _pay;
}
function showBalance(){
debugger;
var blnc = pay(balance,willPay);
alert("当前余额:" + blnc);
}
showBalance();
日志输出:
程序运行时,有些中间数据需要记录,以便检查程序运行的状态;对于JavaScript记录中间数据通常是以日志的形式记录需要记录的数据,再发送到服务器上保存起来;日志记录的内容可以是任意的信息,根据开发者的需要而定;
览器解析HTML文件的过程是网页呈现的关键步骤之一。具体介绍如下:
HTML文档的接收和预处理
解析为DOM树
CSS解析与CSSOM树构建
JavaScript加载与执行
渲染树的构建
布局计算(Layout)
绘制(Paint)
因此,我们开发中要注意以下几点:
综上所述,浏览器解析HTML文件是一个复杂而高度优化的过程,涉及从网络获取HTML文档到最终将其渲染到屏幕上的多个步骤。开发者需要深入理解这些步骤,以优化网页性能和用户体验。通过合理组织HTML结构、优化资源加载顺序、减少不必要的DOM操作和合理安排CSS和JavaScript的加载与执行,可以显著提升页面加载速度和运行效率。
*请认真填写需求信息,我们会在24小时内与您取得联系。