VBS中使用WMI事件处理监控系统进程

OA项目中遇到这样一个问题:用户起草一种类型的公文,编辑word正文时希望能够将公文中的一些内容自动带到正文中,这个无非就是从服务器上把公文所对应的word正文文件下载到本地,替换掉里面指定内容的事,问题的关键在于替换掉内容后,或者用户填写了内容后,关闭word文件,如何监听此事件以在word程序退出后将此文件上传到服务器,不然,用户岂不是只是在本地做了修改,毫无用处。google了很久,终于解决了此问题,过程如下:

<html>
	<body onload="download(34567);init("C://Temp/" + 34567 + ".doc");replacefile();wordlistener();">
	</body>
</html>
<script language="javascript">
	//根据公文ID下载文件
	function download(objID){
		doDownload(objID);	
	}
	function upload(filepath){
		doUpload(filepath);	
	}
</script>
<script language="vbscript">  
	'定义变量 开始
	'定义操作word文件的相关变量
	Dim myDocApp
	Dim myDoc
	Dim objSelection
	Dim wordfilepath
	'定义变量 结束
	
	'初始化 开始
	'设置操作word文件的相关变量
	function init(filepath)
		Set myDocApp = CreateObject("Word.Application")
		myDocApp.Visible = True
		myDocApp.Activate
		myDocApp.Application.ScreenUpdating = False
		set myDoc = myDocApp.Documents.Open(filepath)
		Set objSelection = myDocApp.Selection
		Set wordfilepath = filepath
	end function
	'初始化 结束
	
	'替换文件使用VBS 开始
	'对下载到本地的公文模板进行内容替换
	function replacefile()
		replace "#departname#","办公室"
		replace "#username#","张三"
		replace "#createDate#","2009-12-17"
	end function
	'替换文件使用VBS 结束

	'替换函数 开始
	function replace(text,replacetext)
    With objSelection.Find
        .Text = text
        .Replacement.Text = replacetext
        .Forward = True
        .Wrap = 1
        .Execute ,,,,,,,,,,2
    End With
  end function
  '替换函数 结束 
  
  '监听系统进程的函数 开始
  function wordlistener()
		strComputer = "."
		Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
		Set objEventSource = objWMIService.ExecNotificationQuery _
		    ("SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process'")
		Do While True
		    Set objEventObject = objEventSource.NextEvent()
		    If Ucase(Left(objEventObject.TargetInstance.Name, 7)) = "WINWORD" Then
		    	Select Case objEventObject.Path_.Class
		        '如果是打开
		        'Case "__InstanceCreationEvent"
		        		'在这里添加事件处理代码
		        '如果是关闭
		        Case "__InstanceDeletionEvent"
		            '在这里添加事件处理代码 上传文件
		            upload wordfilepath
		            Exit Do
		    	End Select
		    End If
		Loop
	end function
	'监听系统进程的函数 结束 
</script>

js常用正则表达式实例

匹配中文字符的正则表达式: [\u4e00-\u9fa5] 

匹配双字节字符(包括汉字在内):[^\x00-\xff] 

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 

匹配空行的正则表达式:\n[\s| ]*\r 

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/  

匹配首尾空格的正则表达式:(^\s*)|(\s*$) 

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下: 

String.prototype.trim = function() 

return this.replace(/(^\s*)|(\s*$)/g, ""); 

利用正则表达式分解和转换IP地址: 

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: 

function IP2V(ip) 

re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式 
if(re.test(ip)) 

return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1 

else 

throw new Error("Not a valid IP address!") 

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: 

var ip="10.100.20.168" 
ip=ip.split(".") 
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1)) 

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./ %&=]*)  

利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复] 

var s="abacabefgeeii" 
var s1=s.replace(/(.).*\1/g,"$1") 
var re=new RegExp("["+s1+"]","g") 
var s2=s.replace(re,"")  
alert(s1+s2) //结果为:abcefgi 

这个方法对于字符顺序有要求的字符串可能不适用。 

得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1 

s="http://www.9499.net/page1.htm" 
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") 
alert(s) 

利用正则表达式限制网页表单里的文本框输入内容: 


正则表达式限制只能输入中文:onkeyup="value="/value.replace(/["^\u4E00-\u9FA5]
/g,’’)" onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\u4E00-\u9FA5]/g,’’))" 

用正则表达式限制只能输入全角字符: onkeyup="value="/value.replace(/["^\uFF00-
\uFFFF]/g,’’)" onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\uFF00-\uFFFF]/g,’’))" 

用正则表达式限制只能输入数字:onkeyup="value="/value.replace(/["^\d]
/g,’’) "onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\d]/g,’’))" 

用正则表达式限制只能输入数字和英文:onkeyup="value="/value.replace(/[\W]
/g,"’’) "onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\d]/g,’’))"

常用的JavaScript验证正则表达式

下面都是我收集的一些比较常用的正则表达式,因为平常可能在表单验证的时候,用到的比较多。特发出来,让各位朋友共同使用。呵呵。

匹配中文字符的正则表达式: [u4e00-u9fa5]

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^x00-xff]

评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:ns*r

评注:可以用来删除空白行

匹配HTML标记的正则表达式:< (S* )[^>]*>.* |< .*  />

评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^s*|s*$

评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*

评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

评注:表单验证时很实用

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}

评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}

评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]d{5}( !d)

评注:中国邮政编码为6位数字

匹配身份证:d{15}|d{18}

评注:中国的身份证为15位或18位

匹配ip地址:d+.d+.d+.d+

评注:提取ip地址时有用

匹配特定数字:

^[1-9]d*$    //匹配正整数

^-[1-9]d*$   //匹配负整数

^- [1-9]d*$   //匹配整数

^[1-9]d*|0$  //匹配非负整数(正整数 + 0)

^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)

^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数

^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数

^- ([1-9]d*.d*|0.d*[1-9]d*|0 .0+|0)$  //匹配浮点数

^[1-9]d*.d*|0.d*[1-9]d*|0 .0+|0$   //匹配非负浮点数(正浮点数 + 0)

^(-([1-9]d*.d*|0.d*[1-9]d*))|0 .0+|0$  //匹配非正浮点数(负浮点数 + 0)

评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:

只能输入数字:“^[0-9]*$”

只能输入n位的数字:“^d{n}$”

只能输入至少n位数字:“^d{n,}$”

只能输入m-n位的数字:“^d{m,n}$”

只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”

只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2}) $”

只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3}) $”

只能输入非零的正整数:“^+ [1-9][0-9]*$”

只能输入非零的负整数:“^-[1-9][0-9]*$”

只能输入长度为3的字符:“^.{3}$”

只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”

只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”

只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”

只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”

只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”

验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,

只能包含字符、数字和下划线。

验证是否含有^%&’,;= $”等字符:“[^%&’,;= $x22]+”

只能输入汉字:“^[u4e00-u9fa5],{0,}$”

验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”

验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./ %&=]*) $”

验证电话号码:“^((d{3,4})|d{3,4}-) d{7,8}$”

正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,

“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。

验证身份证号(15位或18位数字):“^d{15}|d{}18$”

验证一年的12个月:“^(0 [1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”

验证一个月的31天:“^((0 [1-9])|((1|2)[0-9])|30|31)$”

正确格式为:“01”“09”和“1”“31”。

匹配中文字符的正则表达式: [u4e00-u9fa5]

匹配双字节字符(包括汉字在内):[^x00-xff]

匹配空行的正则表达式:n[s| ]*r

匹配HTML标记的正则表达式:/< (.*)>.*|< (.*) />/

匹配首尾空格的正则表达式:(^s*)|(s*$)

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./ %&=]*) 

(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}

(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现

String.prototype.trim = function()

{

return this.replace(/(^s*)|(s*$)/g, “”);

}

(3)应用:利用正则表达式分解和转换IP地址

function IP2V(ip) //IP地址转换成对应数值

{

re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式

if(re.test(ip))

{

return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1

}

else

{

throw new Error(”Not a valid IP address!”)

}

}

(4)应用:从URL地址中提取文件名的javascript程序

s=”http://www.9499.net/page1.htm”;

s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ; //Page1.htm

(5)应用:利用正则表达式限制网页表单里的文本框输入内容

用正则表达式限制只能输入中文:onkeyup=”value=”/blog/value.replace(/[“^u4E00-u9FA5]/g,”) ” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^u4E00-u9FA5]/g,”))”

用正则表达式限制只能输入全角字符: onkeyup=”value=”/blog/value.replace(/[“^uFF00-uFFFF]/g,”) ” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^uFF00-uFFFF]/g,”))”

用正则表达式限制只能输入数字:onkeyup=”value=”/blog/value.replace(/[“^d]/g,”) “onbeforepaste= “clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))”

用正则表达式限制只能输入数字和英文:onkeyup=”value=”/blog/value.replace(/[W]/g,””) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”

Javascript中最常用的55个经典技巧

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><*** src="/*.html>";</***></noscript> 


11. <input type=button value="/查看网页源代码 
onclick="window.location = "view-source:"+ "http://www.pconline.com.cn"">
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="/blog/最大化 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:none; border-right:none; border-top:none; border-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:scroll;overflow-y:hidden"> 
</body> 
让横条没有: 
<body style="overflow:scroll;overflow-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=mailto:****@***.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:center;background-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.clientWidth; document.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="/blog/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]=1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0>www.njcatv.net"
autourl[2]="javacool.3322.net"
autourl[3]=1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0>www.sina.com.cn"
autourl[4]="www.nuaa.edu.cn"
autourl[5]=1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0>www.cctv.com"
function butt(){
***("<form name=autof>")
for(var i=1;i<autourl.length;i++)
***("<input type=text name=txt"+i+" size=10 value="/测试中……> =》<input type=text 
name=url"+i+" size=40> =》<input type=button value="/blog/GO 
onclick=window.open(this.form.url"+i+".value)><br>")
***("<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="/blog/时间"+tim/10+"秒"}
b++
}
function run(){for(var i=1;i<autourl.length;i++)***("<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="5;URL=http://www.51js.com"> 


40.网页是否被检索
<meta name="ROBOTS" content="属性值">
  其中属性值有以下一些:
  属性值为"all": 文件将被检索,且页上链接可被查询;
  属性值为"none": 文件不被检索,而且不查询页上的链接;
  属性值为"index": 文件将被检索;
  属性值为"follow": 查询页上的链接;
  属性值为"noindex": 文件不检索,但可被查询链接;
  属性值为"nofollow": 文件不被检索,但可查询页上的链接。


41、email地址的分割
把如下代码加入<body>区域中
<a href="mailto:webmaster@sina.com">webmaster@sina.com</a>


42、流动边框效果的表格
把如下代码加入<body>区域中
<SCRIPT>
l=Array(6,7,8,9,'a','b','b','c','d','e','f')
Nx=5;Ny=35
t="<table border=0 cellspacing=0 cellpadding=0 height="+((Nx+2)*16)+"><tr>"
for(x=Nx;x<Nx+Ny;x++)
t+="<td width=16 id=a_mo"+x+"> </td>"
t+="</tr><tr><td width=10 id=a_mo"+(Nx-1)+"> </td><td colspan="+(Ny-2)+" rowspan="+(Nx)+"> </td><td width=16 id=a_mo"+(Nx+Ny)+"></td></tr>"
for(x=2;x<=Nx;x++)
t+="<tr><td width=16 id=a_mo"+(Nx-x)+"> </td><td width=16 id=a_mo"+(Ny+Nx+x-1)+"> </td></tr>"
t+="<tr>"
for(x=Ny;x>0;x--)
t+="<td width=16 id=a_mo"+(x+Nx*2+Ny-1)+"> </td>"
***(t+"</tr></table>")
var N=Nx*2+Ny*2
function f1(y){
for(i=0;i<N;i++){
c=(i+y)%20;if(c>10)c=20-c
document.all["a_mo"+(i)].bgColor=""""#0000"+l[c]+l[c]+"'"}
y++
setTimeout('f1('+y+')','1')}
f1(1)
</SCRIPT>


43、JavaScript主页弹出窗口技巧
窗口中间弹出
<script>
window.open("http://www.cctv.com","","width=400,height=240,top="+(screen.availHeight-240)/2+",left="+(screen.availWidth-400)/2);
</script>
============
<html>
<head>
<script language="LiveScript">
function WinOpen() {
    msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");
    msg.***("<HEAD><TITLE>哈 罗!</TITLE></HEAD>");
    msg.***("<CENTER><H1>酷 毙 了!</H1><h2>这 是<B>JavaScript</B>所 开 的 视 窗!</h2></CENTER>");
}
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Push me" onclick="WinOpen()">
</form>
</body>
</html>
==============
一、在下面的代码中,你只要单击打开一个窗口,即可链接到赛迪网。而当你想关闭时,只要单击一下即可关闭刚才打开的窗口。
  代码如下: 
  <SCRIPT language="JavaScript"> 
  <!-- 
  function openclk() { 
  another=open('1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0>http://www.ccidnet.com','NewWindow'); 
  } 
  function closeclk() { 
  another.close(); 
  } 
  //--> 
  </SCRIPT> 
  <FORM> 
  <INPUT TYPE="BUTTON" NAME="open" value="/打开一个窗口" onClick="openclk()"> 
  <BR> 
  <INPUT TYPE="BUTTON" NAME="close" value="/blog/关闭这个窗口" onClick="closeclk()"> 
  </FORM> 
  二、上面的代码也太静了,为何不来点动感呢?如果能给页面来个降落效果那该多好啊! 
  代码如下: 
  <script> 
  function drop(n) { 
  if(self.moveBy){ 
  self.moveBy (0,-900); 
  for(i = n; i > 0; i--){ 
  self.moveBy(0,3); 
  } 
  for(j = 8; j > 0; j--){ 
  self.moveBy(0,j); 
  self.moveBy(j,0); 
  self.moveBy(0,-j); 
  self.moveBy(-j,0); 
  } 
  } 
  } 
  </script> 
  <body onLoad="drop(300)"> 
  三、讨厌很多网站总是按照默认窗口打开,如果你能随心所欲控制打开的窗口那该多好。 
  代码如下: 
  <SCRIPT LANGUAGE="JavaScript"> 
  <!-- Begin 
  function popupPage(l, t, w, h) { 
  var windowprops = "location=no,scrollbars=no,menubars=no,toolbars=no,resizable=yes" + 
  ",left=" + l + ",top=" + t + ",width=" + w + ",height=" + h; 
  var URL = "http://www.80cn.com"; 
  popup = window.open(URL,"MenuPopup",windowprops); 
  } 
  // End --> 
  </script> 
  <table> 
  <tr> 
  <td> 
  <form name=popupform> 
  <pre> 
  打开页面的参数<br> 
  离开左边的距离: <input type=text name=left size=2 maxlength=4> pixels 
  离开右边的距离: <input type=text name=top size=2 maxlength=4> pixels 
  窗口的宽度: <input type=text name=width size=2 maxlength=4> pixels 
  窗口的高度: <input type=text name=height size=2 maxlength=4> pixels 
  </pre> 
  <center> 
  <input type=button value="打开这个窗口!" onClick="popupPage(this.form.left.value, this.form.top.value, this.form.width.value,
this.form.height.value)"> 
  </center> 
  </form> 
  </td> 
  </tr> 
  </table>你只要在相对应的对话框中输入一个数值即可,将要打开的页面的窗口控制得很好。 


44、页面的打开移动
把如下代码加入<body>区域中
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
for (t = 2; t > 0; t--) {
for (x = 20; x > 0; x--) {
for (y = 10; y > 0; y--) {
parent.moveBy(0,-x);
   }
}
for (x = 20; x > 0; x--) {
for (y = 10; y > 0; y--) {
parent.moveBy(0,x);
   }
}
for (x = 20; x > 0; x--) {
for (y = 10; y > 0; y--) {
parent.moveBy(x,0);
   }
}
for (x = 20; x > 0; x--) {
for (y = 10; y > 0; y--) {
parent.moveBy(-x,0);
     }
   } 
}
//-->
//   End -->
</script>


45、显示个人客户端机器的日期和时间
<script language="LiveScript">
<!-- Hiding
   today = new Date()
   ***("现 在 时 间 是: ",today.getHours(),":",today.getMinutes())
   ***("<br>今 天 日 期 为: ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());
// end hiding contents -->
</script>


46、自动的为你每次产生最後修改的日期了: 
<html>
<body>
This is a simple HTML- page.
<br>
Last changes:
   <script language="LiveScript">
   <!--   hide script from old browsers
     ***(document.lastModified)
   // end hiding contents -->
   </script>
</body>
</html>


47、不能为空和邮件地址的约束:
<html>
<head>
<script language="JavaScript">
<!-- Hide
function test1(form) {
   if (form.text1.value == "")
     alert("您 没 写 上 任 何 东 西, 请 再 输 入 一 次 !")
   else { 
    alert("嗨 "+form.text1.value+"! 您 已 输 入 完 成 !");
   }
}
function test2(form) {
   if (form.text2.value == "" || 
       form.text2.value.indexOf('@', 0) == -1) 
         alert("这 不 是 正 确 的 e-mail address! 请 再 输 入 一 次 !");
   else alert("您 已 输 入 完 成 !");
}
// -->
</script>
</head>
<body>
<form name="first">
Enter your name:<br>
<input type="text" name="text1">
<input type="button" name="button1" value="输 入 测 试" onClick="test1(this.form)">
<P>
Enter your e-mail address:<br>
<input type="text" name="text2">
<input type="button" name="button2" value="输 入 测 试" onClick="test2(this.form)">
</body>


48、跑马灯
<html>
<head>
<script language="JavaScript">
<!-- Hide
var scrtxt="怎麽样 ! 很酷吧 ! 您也可以试试."+"Here goes your message the visitors to your 
page will "+"look at for hours in pure fascination...";
var lentxt=scrtxt.length;
var width=100;
var pos=1-width;
function scroll() {
   pos++;
   var scroller="";
   if (pos==lentxt) {
     pos=1-width;
   }
   if (pos<0) {
     for (var i=1; i<=Math.abs(pos); i++) {
       scroller=scroller+" ";}
     scroller=scroller+scrtxt.substring(0,width-i+1);
   }
   else {
     scroller=scroller+scrtxt.substring(pos,width+pos);
   }
   window.status = scroller;
   setTimeout("scroll()",150);
   }
//-->
</script>
</head>
<body onLoad="scroll();return true;">
这里可显示您的网页 !
</body>
</html>


49、在网页中用按钮来控制前页,后页和主页的显示。
<html>
<body>
<FORM NAME="buttonbar">
      <INPUT TYPE="button" VALUE="Back" onClick="history.back()">
      <INPUT TYPE="button" VALUE="JS- Home" onClick="location='script.html'">
      <INPUT TYPE="button" VALUE="Next" onCLick="history.forward()">
</FORM>
</body>
</html>
50、查看某网址的源代码
把如下代码加入<body>区域中
<SCRIPT>
function add()
{
var ress=document.forms[0].luxiaoqing.value
window.location="view-source:"+ress;
}
</SCRIPT>
输入要查看源代码的URL地址:
<FORM><input type="text" name="luxiaoqing" size=40 value="http://"></FORM>
<FORM><br>
<INPUT type="button" value="查看源代码" onClick=add()>
</FORM>


51、title显示日期
把如下代码加入<body>区域中:
<script language="JavaScript1.2">
<!--hide
var isnMonth = new
Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
var isnDay = new
Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");
today = new Date () ;
Year=today.getYear();
Date=today.getDate();
if (document.all)
document.title="今天是: "+Year+"年"+isnMonth[today.getMonth()]+Date+"日"+isnDay[today.getDay()]
//--hide-->
</script>


52、显示所有链接
把如下代码加入<body>区域中
<script language="JavaScript1.2">
<!--
function extractlinks(){
var links=document.all.tags("A")
var total=links.length
var win2=window.open("","","menubar,scrollbars,toolbar")
win2.***("<font size='2'>一共有"+total+"个连接</font><br>")
for (i=0;i<total;i++){
win2.***("<font size='2'>"+links[i].outerHTML+"</font><br>")
}
}
//-->
</script>
<input type="button" onClick="extractlinks()" value="显示所有的连接">


53、回车键换行
把如下代码加入<body>区域中
<script type="text/javascript">                
function handleEnter (field, event) {
   var keyCode = event.keyCode   event.keyCode : event.which  
event.which : event.charCode;
   if (keyCode == 13) {
    var i;
    for (i = 0; i < field.form.elements.length; i++)
     if (field == field.form.elements[i])
      break;
    i = (i + 1) % field.form.elements.length;
    field.form.elements[i].focus();
    return false;
   } 
   else
   return true;
}      
</script>
<form>
<input type="text" onkeypress="return handleEnter(this, event)"><br>
<input type="text" onkeypress="return handleEnter(this, event)"><br>
<textarea>回车换行


54、确认后提交
把如下代码加入<body>区域中
<SCRIPT LANGUAGE="JavaScript">
<!--
function msg(){
if (confirm("你确认要提交嘛!"))
document.lnman.submit()
}
//-->
</SCRIPT>
<form name="lnman" method="post" action="">
   <p>
     <input type="text" name="textfield" value="确认后提交">
   </p>
   <p>
     <input type="button" name="Submit" value="提交" onclick="msg();">
   </p>
</form>


55、改变表格的内容
把如下代码加入<body>区域中
<script ***script>
var arr=new Array()
arr[0]="一一一一一";
arr[1]="二二二二二";
arr[2]="三三三三三";
</script>
<select onchange="zz.cells[this.selectedIndex].innerHTML=arr[this.selectedIndex]">
   <option value=a>改变第一格</option>
   <option value=a>改变第二格</option>
   <option value=a>改变第三格</option>
</select>
<table id=zz border=1>
   <tr height=20>
     <td width=150>第一格</td>
<td width=150>第二格</td>
<td width=150>第三格</td>
   </tr>
</table>

 

常用正则表达式大全

常用正则表达式大全!(例如:匹配中文、匹配html)

匹配中文字符的正则表达式: [u4e00-u9fa5]   

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

  

匹配双字节字符(包括汉字在内):[^x00-xff]   

评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

   

匹配空白行的正则表达式:ns*r   

评注:可以用来删除空白行   

 

匹配HTML标记的正则表达式:<(S* )[^>]*>.* |<.*  />   

评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力   

 

匹配首尾空白字符的正则表达式:^s*|s*$   

评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式   

 

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*   

评注:表单验证时很实用   

 

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*   

评注:网上流传的版本功能很有限,上面这个基本可以满足需求   

 

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$   

评注:表单验证时很实用   

 

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}   

评注:匹配形式如 0511-4405222 或 021-87888822   

 

匹配腾讯QQ号:[1-9][0-9]{4,}   

评注:腾讯QQ号从10000开始   

 

匹配中国邮政编码:[1-9]d{5}( !d)   

评注:中国邮政编码为6位数字   

 

匹配身份证:d{15}|d{18}   

评注:中国的身份证为15位或18位   

 

匹配ip地址:d+.d+.d+.d+   

评注:提取ip地址时有用   

 

匹配特定数字:   

^[1-9]d*$    //匹配正整数   

^-[1-9]d*$   //匹配负整数   

^- [1-9]d*$   //匹配整数   

^[1-9]d*|0$  //匹配非负整数(正整数 + 0)   

^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)   

^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数   

^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数   

^- ([1-9]d*.d*|0.d*[1-9]d*|0 .0+|0)$  //匹配浮点数   

^[1-9]d*.d*|0.d*[1-9]d*|0 .0+|0$   //匹配非负浮点数(正浮点数 + 0)   

^(-([1-9]d*.d*|0.d*[1-9]d*))|0 .0+|0$  //匹配非正浮点数(负浮点数 + 0)   

评注:处理大量数据时有用,具体应用时注意修正   

 

匹配特定字符串:   

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串   

^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串   

^[a-z]+$  //匹配由26个英文字母的小写组成的字符串   

^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串   

^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串   

 

在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:   

只能输入数字:“^[0-9]*$”   

只能输入n位的数字:“^d{n}$”   

只能输入至少n位数字:“^d{n,}$”   

只能输入m-n位的数字:“^d{m,n}$”   

只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”   

只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2}) $”   

只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3}) $”   

只能输入非零的正整数:“^+ [1-9][0-9]*$”   

只能输入非零的负整数:“^-[1-9][0-9]*$”   

只能输入长度为3的字符:“^.{3}$”   

只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”   

只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”   

只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”   

只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”   

只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”   

 

验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。   

 

验证是否含有^%&”,;= $”等字符:“[^%&”,;= $x22]+”   只能输入汉字:“^[u4e00-u9fa5],{0,}$”   

 

验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”   

 

验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./ %&=]*) $”   

 

验证电话号码:“^((d{3,4})|d{3,4}-) d{7,8}$”   

正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,   “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。   

 

验证身份证号(15位或18位数字):“^d{15}|d{}18$”   

 

验证一年的12个月:“^(0 [1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”   

验证一个月的31天:“^((0 [1-9])|((1|2)[0-9])|30|31)$”   正确格式为:“01”“09”和“1”“31”。   

 

匹配中文字符的正则表达式: [u4e00-u9fa5]   

匹配双字节字符(包括汉字在内):[^x00-xff]   

匹配空行的正则表达式:n[s| ]*r   

匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/   

匹配首尾空格的正则表达式:(^s*)|(s*$)   

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*   

 

匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./ %&=]*)    

 

(1)应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)   

String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}   

 

(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现   

String.prototype.trim = function()   {   

return this.replace(/(^s*)|(s*$)/g, “”);   

}   

 

(3)应用:利用正则表达式分解和转换IP地址   

function IP2V(ip) //IP地址转换成对应数值   {   

re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式   

if(re.test(ip))   {   

return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1   

}   else   {   

throw new Error(“Not a valid IP address!”)   

}   }   

 

(4)应用:从URL地址中提取文件名的javascript程序   

s=”http://www.9499.net/page1.htm”;   

s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ;//Page1.htm   

 

(5)应用:利用正则表达式限制网页表单里的文本框输入内容   

用正则表达式限制只能输入中文:

onkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^u4E00-u9FA5]/g,”))”   

用正则表达式限制只能输入全角字符:

onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^uFF00-uFFFF]/g,”))”   

用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste= “clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^d]/g,”))”   

用正则表达式限制只能输入数字和英文:

onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(”text”,clipboardData.getData(”text”).replace(/[^d]/g,”

[导入]Javascript常用正则表达式


匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内): [^\x00-\xff]



应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,&quot;aa&quot;).length;}

匹配空行的正则表达式: \n[\s| ]*\r

匹配HTML标记的正则表达式: /.*|/

匹配首尾空格的正则表达式: (^\s*)|(\s*$)



应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
String.prototype.trim = function() {return this.replace(/(^\s*)|(\s*$)/g, &quot;&quot;);}
利用正则表达式分解和转换IP地址:下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的javascript程序:
function IP2V(ip) {re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip)) {return RegExp.*Math.pow(255,3))+RegExp.*Math.pow(255,2))+RegExp.*255+RegExp.*1}else {throw new Error(&quot;Not a valid IP address!&quot;)}}
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
匹配Email地址的正则表达式: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式: http://([\w-]+\.)+[\w-]+(/[\w- ./ %&amp;=]*) 
利用正则表达式去除字串中重复的字符的算法程序:
var s="abacabefgeeii"var s1=s.replace(/(.).*/g,"")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2) //结果为:abcefgi



用正则表达式从URL地址中提取文件名的javascript程序,如下结果为
page1s="http://www.9499.net/page1.htm"s=s.replace(/(.*\/)([^\.]+).*/ig,"")alert(s)
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符:onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'')
"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'')
"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

文章来源:http://blog.163.com/ccbobo_cat/blog/static/32099462200961005220547

[转W3School教程]JavaScriptHTMLDOM对象

JavaScript HTML DOM 对象

Previous Page Next Page 除了内置的 JavaScript 对象以外,你还可以使用 JavaScript 访问并处理所有的 HTML DOM 对象。

更多 JavaScript 对象

点击以下链接,可以获得以下对象的更多信息,包括它们的集合、属性、方法以及事件。

对象 描述

Window JavaScript 层级中的顶层对象。Windows 对象会呈现 (represent) 一个浏览器窗口。每当 <body> 或者 <frameset> 标签出现,Window 对象就会被自动创建。

Navigator 包含客户端浏览器的信息。

Screen 包含客户端显示屏的信息。

History 包含了浏览器窗口访问过的 URL。

Location 包含了当前URL的信息。

HTML DOM

HTML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML)。

HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法。

通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。

HTML DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。

点击下面的链接,可获得更多关于如何使用 JavaScript 来访问和处理 DOM 对象的知识:

对象 描述

Document 代表整个 HTML 文档,用来访问页面中的所有元素。

Anchor 代表 <a> 元素。

Area 代表图像地图中的 <area> 元素。

Base 代表 <base> 元素。

Body 代表图像地图中的 <body> 元素。

Button 代表 <button> 元素。

Event 代表事件的状态

Form 代表 <form> 元素

Frame 代表 <frame> 元素

Frameset 代表 <frameset> 元素

Iframe 代表 <iframe> 元素

Image 代表 <img> 元素

Input button 代表 HTML 表单中的按钮

Input checkbox 代表 HTML 表单中的选择框

Input file 代表 HTML 表单中的 fileupload 。

Input hidden 代表 HTML 表单中的隐藏域。

Input password 代表 HTML 表单中的密码域。

Input radio 代表 HTML 表单中的单选框。

Input reset 代表 HTML 表单中的重置按钮。

Input submit 代表 HTML 表单中的确认按钮。

Input text 代表 HTML 表单中的文本输入域。

Link 代表 <link> 元素

Meta 代表 <meta> 元素

Object 代表一个 <Object> 元素

Option 代表 <option> 元素

Select 代表 HTML 表单中的选择列表。

Style 代表某个单独的样式声明。

Table 代表 <table> 元素。

TableData 代表 <td> 元素。

TableRow 代表 <tr> 元素。

Textarea 代表 <textarea> 元素。

单引号,双引号,javascript,HTML,转义字符


在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:
<input value=”Test” type=”button” onclick=”alert(“”OK””);” />
IE提示出错后,再漫不经心地改为:
<input value=”Test” type=”button” onclick=”alert(\”OK\”);” />
结果还是出错。
这时,我就想不通了,虽然我知道最直接的解决方法是写成这样:
<input value=”” type=”button” onclick=”alert(‘OK’);” />
但为什么javascript中的转义字符\没有效果了呢?

后来找到一段正常的代码:
<input value=”Test” type=”button” onclick=”alert(&quot;OK&quot;);” />
这时才理解,原来这时,还是归于HTML的管辖范围,所以转义字符应该使用HTML的,而不是javascript的。两个双引号的做法是vbScript的,\”这种做法则是javascript的,而HTML的,则是用&quot;,此外还可以使用:”、’。

下面列出各种表达方法:
<html>
<body>
<input value=”外双引号内双引号-错误” type=”button” onclick=”alert(“OK”);” /><br />
<input value=”外单引号内单引号-错误” type=”button” onclick=’alert(‘OK’);’ /><br />
<input value=”两个双引号-错误” type=”button” onclick=”alert(“”OK””);” /><br />
<input value=”两个单引号-错误” type=”button” onclick=”alert(”OK”);” /><br />
<input value=”\+双引号-错误” type=”button” onclick=”alert(\”OK\”);” /><br />
<input value=”\+单引号-错误” type=”button” onclick=”alert(\’OK\’);” /><br />
<input value=”外双引号内单引号-OK” type=”button” onclick=”alert(‘OK’);” /><br />
<input value=”外单引号内双引号-OK” type=”button” onclick=’alert(“OK”);’ /><br />
<input value=”外部不使用引号-OK” type=”button” onclick=alert(‘OK’);alert(“OK”); /><br />
<input value=”HTML转义字符”(& # 3 4 ;)-OK” type=”button” onclick=”alert(“OK”);” /><br />
<input value=”HTML转义字符'(& # 3 9 ;)-OK” type=”button” onclick=”alert(‘OK’);” /><br />
<input value=”HTML转义字符”(& # x 2 2 ;)-OK” type=”button” onclick=”alert(‘OK’);” /><br />
<input value=”HTML转义字符'(& # x 2 7 ;)-OK” type=”button” onclick=”alert(‘OK’);” /><br />
<input value=”HTML转义字符&quot;(& q u o t ;)-OK” type=”button”
onclick=”alert(&quot;OK&quot;);” /><br />
<input value=”HTML转义字符&apos;(& a p o s ;)-IE错误”
type=”button” onclick=”alert(&apos;OK&apos;);” /><br />

<input value=”其它\\-错误” type=”button” onclick=”alert(\\”OK\\”);” /><br />
<input value=”其它\& # 3 4 ;-错误” type=”button” onclick=”alert(\”OK\”);” /><br />
</body>
</html>

WEB打印大全

1、控制”纵打”、 横打”和“页面的边距。 
(1)<script defer> 
function SetPrintSettings() { 
 // — advanced features 
 factory.printing.SetMarginMeasure(2) // measure margins in inches 
 factory.SetPageRange(false, 1, 3) // need pages from 1 to 3 
 factory.printing.printer = “HP DeskJet 870C” 
 factory.printing.copies = 2 
 factory.printing.collate = true 
 factory.printing.paperSize = “A4” 
 factory.printing.paperSource = “Manual feed” 

 // — basic features 
 factory.printing.header = “This is MeadCo” 
 factory.printing.footer = “Advanced Printing by scriptX” 
 factory.printing.portrait = false 
 factory.printing.leftMargin = 1.0 
 factory.printing.topMargin = 1.0 
 factory.printing.rightMargin = 1.0 
 factory.printing.bottomMargin = 1.0 

</script> 

(2) 
<script language=”javascript”> 
  function printsetup(){ 
  // 打印页面设置 
  wb.execwb(8,1); 
  } 
  function printpreview(){ 
  // 打印页面预览 
     
  wb.execwb(7,1); 
      
     
  } 

  function printit() 
  { 
  if (confirm(”确定打印吗?”)) { 
  wb.execwb(6,6) 
  } 
  } 
  </script> 
</head> 
<body> 
<OBJECT classid=”CLSID:8856F961-340A-11D0-A96B-00C04FD705A2″ 

height=0 id=wb name=wb width=0></OBJECT> 
<input type=button name=button_print value=”打印” 

onclick=”javascript:printit()”> 
<input type=button name=button_setup value=”打印页面设置” 

onclick=”javascript:printsetup();”> 
<input type=button name=button_show value=”打印预览” 

onclick=”javascript:printpreview();”> 
<input type=button name=button_fh value=”关闭” 

onclick=”javascript:window.close();”> 

———————————————— 
关于这个组件还有其他的用法,列举如下: 
WebBrowser.ExecWB(1,1) 打开 
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 
Web.ExecWB(4,1) 保存网页 
Web.ExecWB(6,1) 打印 
Web.ExecWB(7,1) 打印预览 
Web.ExecWB(8,1) 打印页面设置 
Web.ExecWB(10,1) 查看页面属性 
Web.ExecWB(15,1) 好像是撤销,有待确认 
Web.ExecWB(17,1) 全选 
Web.ExecWB(22,1) 刷新 
Web.ExecWB(45,1) 关闭窗体无提示 

2、分页打印 
<HTML> 
<HEAD> 
<STYLE>   
  P {page-break-after: always} 
</STYLE> 
</HEAD> 
<BODY> 
<%while not rs.eof%> 
<P><%=rs(0)%></P> 
<%rs.movenext%> 
<%wend%> 
</BODY> 
</HTML> 

3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号 
(1)ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉,打印就不出来了。 
(2)<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME=”Generator” CONTENT=”EditPlus”> 
<META NAME=”Author” CONTENT=”YC”> 
<script language=”VBscript”> 
dim hkey_root,hkey_path,hkey_key 
hkey_root=”HKEY_CURRENT_USER” 
hkey_path=”\Software\Microsoft\Internet Explorer\PageSetup” 
”//设置网页打印的页眉页脚为空 
function pagesetup_null() 
  on error resume next 
  Set RegWsh = CreateObject(“Wscript.Shell”) 
  hkey_key=”\header”   
  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,”” 
  hkey_key=”\footer” 
  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,”” 
end function 
”//设置网页打印的页眉页脚为默认值 
function pagesetup_default() 
  on error resume next 
  Set RegWsh = CreateObject(“Wscript.Shell”) 
  hkey_key=”\header”   
  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,”&w&b页码,&p/&P” 
  hkey_key=”\footer” 
  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,”&u&b&d” 
end function 
</script> 
</HEAD> 

<BODY> 
<br/> 
<br/> 
<br/> 
<br/> 
<br/> 
<br/><p align=center> 
<input type=”button” value=”清空页码” onclick=pagesetup_null()> <input type=”button” value=”恢复页吗” onclick=pagesetup_default()><br/> 

</p> 
</BODY> 
</HTML> 
4、浮动帧打印 
<script LANGUAGE=javascript> 
function button1_onclick() { 
  var odoc=window.iframe1.document; 
  var r=odoc.body.createTextRange(); 
  var stxt=r.htmlText; 
  alert(stxt) 
  var pwin=window.open(“”,”print”); 
  pwin.document.write(stxt); 
  pwin.print(); 

</script> 
4、用FileSystem组件实现WEB应用中的本地特定打印 
<script Language=VBscript> 
function print_onclick //打印函数 
dim label 
label=document.printinfo.label.value //获得HTML页面的数据 
set objfs=CreateObject(“scripting.FileSystemObject”) //创建FileSystem组件对象的实例 
set objprinter=objfs.CreateTextFile (“LPT1:”,true) //建立与打印机的连接 
objprinter.Writeline(“__________________________________”) //输出打印的内容 
objprinter.Writeline(“| |”) 
objprinter.Writeline(“| 您打印的数据是:”&label& ” |”) 
objprinter.Writeline(“| |”) 
objprinter.Writeline(“|_________________________________|”) 
objprinter.close //断开与打印机的连接 
set objprinter=nothing 
set objfs=nothing // 关闭FileSystem组件对象 
end function 
</script> 
服务器端脚本: 
<%……… 
set conn=server.CreateObject (“adodb.connection”) 
conn.Open “DSN=name;UID=XXXX;PWD=XXXX;” 
set rs=server.CreateObject(“adodb.recordset”) 
rs.Open(“select ……”),conn,1,1 
……….%> //与数据库进行交互 
HTML页面编码: 
<HTML> 
……… 
<FORM ID=printinfo NAME=”printinfo” > 
<INPUT type=”button” value=”打印>>” id=print name=print > //调用打印函数 
<INPUT type=hidden id=text1 name=label value=<%=………%>> //保存服务器端传来的数据 
……… 
</HTML>

JS去掉两端空格的trim()方法

去除字符串左右两端的空格,在vbscript里面可以轻松地使用 trim、ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写。下面的实现方法是用到了正则表达式,效率不错,并把这三个方法加入String对象的内置方法中去。


  写成类的方法格式如下:(str.trim();)


  <script language=”javascript”>
   String.prototype.trim=function(){
      return this.replace(/(^\s*)|(\s*$)/g, “”);
   }
   String.prototype.ltrim=function(){
      return this.replace(/(^\s*)/g,””);
   }
   String.prototype.rtrim=function(){
      return this.replace(/(\s*$)/g,””);
   }
  </script>
  写成函数可以这样:(trim(str))
  <script type=”text/javascript”>
   function trim(str){ //删除左右两端的空格
       return str.replace(/(^\s*)|(\s*$)/g, “”);
   }
   function ltrim(str){ //删除左边的空格
       return str.replace(/(^\s*)/g,””);
   }
   function rtrim(str){ //删除右边的空格
       return str.replace(/(\s*$)/g,””);
   }
  </script>