javascript 小技巧(1)
//过滤数字
//特殊用途
//不缓存
//正则匹配
匹配中文字符的正则表达式:?[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s|?]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)?\/>/?
匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w-?./?%&=]*)?
以下是例子:
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
1.用正则表达式限制只能输入全角字符:?onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'')?"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'')?"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
//消除图像工具栏
<IMG?SRC="mypicture.jpg"
?HEIGHT="100px"
?WIDTH="100px"
?GALLERYIMG="false"
>?
or
<head>
<meta?http-equiv="imagetoolbar"
?content="no"
>
</head>
//无提示关闭
function
?Close()
{
?var
?ua=navigator.userAgent
?var
?ie=navigator.appName=="Microsoft?Internet?Explorer"
?true
:false
?if
(ie)
?{
??????var
?IEversion=parseFloat(ua.substring(ua.indexOf("MSIE?"
)+5,ua.indexOf(";"
,ua.indexOf("MSIE?"
))))
??if
(IEversion<?5.5)
??{
???var
?str??=?'<object?id=noTipClose?classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"
>'
???????str?+=?'<param?name="Command"
?value="Close"
></object>';
???????document.body.insertAdjacentHTML("beforeEnd"
,?str);
???????document.all.noTipClose.Click();
??}
??????else
??{
???????window.opener?=null
;
???????window.close();
??????}
???}
?else
?{
??window.close()
???}
}
//取得控件得绝对位置(1)
<script?language="javascript"
>?
function
?getoffset(e)
{?
?var
?t=e.offsetTop;?
?var
?l=e.offsetLeft;?
?while
(e=e.offsetParent)
?{?
??t+=e.offsetTop;?
??l+=e.offsetLeft;?
?}?
?var
?rec?=?new
?Array
(1);
?rec[0]??=?t;
?rec[1]?=?l;
?return
?rec
}?
</script>
//获得控件的绝对位置(2)
oRect?=?obj.getBoundingClientRect();
oRect.left
oRect.
//最小化,最大化,关闭
//光标停在文字最后
<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()"
>
//页面进入和退出的特效
进入页面<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?
//网页是否被检索
//打印分页
//设置打印
<object?id="factory"
?style="display:none"
?viewastext
??classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
??codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"
></object>
<input?type=button?value=页面设置?onclick="factory.printing.PageSetup()"
>
<input?type=button?value=打印预览?onclick="factory.printing.Preview()"
>
?
<script?language=javascript>
function
?window.onload()
{
???//?--?advanced?features
???factory.printing.SetMarginMeasure(2)?//?measure?margins?in?inches
???factory.printing.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?=?"居左显示&b居中显示&b居右显示页码,第&p页/共&P页"
???factory.printing.footer?=?"(自定义页脚)"
???factory.printing.portrait?=?false
???factory.printing.leftMargin?=?0.75
???factory.printing.topMargin?=?1.5
???factory.printing.rightMargin?=?0.75
???factory.printing.bottomMargin?=?1.5
}
function
?Print(frame)?{
??factory.printing.Print(true
,?frame)?//?print?with?prompt
}
</script>
<input?type=button?value="打印本页"
?onclick="factory.printing.Print(false)"
>
<input?type=button?value="页面设置"
?onclick="factory.printing.PageSetup()"
>
<input?type=button?value="打印预览"
?onclick="factory.printing.Preview()"
><br>
<a?href="http://www.meadroid.com/scriptx/docs/printdoc.htm?static"
??target=_blank>具体使用手册,更多信息,点这里</a>
?
//自带的打印预览
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)?关闭窗体无提示?
<style?media=print>?
.Noprint{display:none;}<!--用本样式在打印时隐藏非打印项目-->?
.PageNext{page-break-after:?always;}<!--控制分页-->?
</style>?
<object??id="WebBrowser"
??width=0??height=0??classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
>????
</object>????
?
<center?class="Noprint"
?>
<input?type=button?value=打印?onclick=document.all.WebBrowser.ExecWB(6,1)>?
<input?type=button?value=直接打印?onclick=document.all.WebBrowser.ExecWB(6,6)>?
<input?type=button?value=页面设置?onclick=document.all.WebBrowser.ExecWB(8,1)>?
</p>?
<p>?<input?type=button?value=打印预览?onclick=document.all.WebBrowser.ExecWB(7,1)>?
</center>
//去掉打印时的页眉页脚
<script??language="JavaScript"
>??
var
?HKEY_Root,HKEY_Path,HKEY_Key;
HKEY_Root="HKEY_CURRENT_USER"
;
HKEY_Path="\\Software\\Microsoft\\Internet?Explorer\\PageSetup\\"
;
//设置网页打印的页眉页脚为空
function
?PageSetup_Null()
{
?try
?{
?????????var
?Wsh=new
?ActiveXObject
("WScript.Shell"
);
??HKEY_Key="header"
;
??Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""
);
??HKEY_Key="footer"
;
??Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""
);
?}
?catch
(e){}
}
//设置网页打印的页眉页脚为默认值
function
??PageSetup_Default()
{??
?try
?{
??var
?Wsh=new
?ActiveXObject
("WScript.Shell"
);
??HKEY_Key="header"
;
??Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P"
);
??HKEY_Key="footer"
;
??Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d"
);
?}
?catch
(e){}
}
</script>
<input?type="button"
?value="清空页码"
?onclick=PageSetup_Null()>
<input?type="button"
?value="恢复页码"
?onclick=PageSetup_Default()>
//浏览器验证
function
?checkBrowser()
{?
???this
.ver=navigator.appVersion?
???this
.dom=document.getElementById?1:0?
???this
.ie6=(this
.ver.indexOf("MSIE?6"
)>-1?&&?this
.dom)?1:0;?
???this
.ie5=(this
.ver.indexOf("MSIE?5"
)>-1?&&?this
.dom)?1:0;?
???this
.ie4=(document.all?&&?!this
.dom)?1:0;?
???this
.ns5=(this
.dom?&&?parseInt(this
.ver)?>=?5)??1:0;?
???this
.ns4=(document.layers?&&?!this
.dom)?1:0;?
???this
.mac=(this
.ver.indexOf('Mac')?>?-1)??1:0;?
???this
.ope=(navigator.userAgent.indexOf('Opera')>-1);?
???this
.ie=(this
.ie6?||?this
.ie5?||?this
.ie4)?
???this
.ns=(this
.ns4?||?this
.ns5)?
???this
.bw=(this
.ie6?||?this
.ie5?||?this
.ie4?||?this
.ns5?||?this
.ns4?||?this
.mac?||?this
.ope)?
???this
.nbw=(!this
.bw)?
???return
?this
;
}
//计算内容宽和高
<SCRIPT??language="javascript"
>??
function
??test(obj)??
{??
???????var
??range??=??obj.createTextRange();??
???????alert("内容区宽度:??"
??+??range.boundingWidth????
?????????????????????????????????????????????????+??"px\r\n内容区高度:??"
??+??range.boundingHeight??+??"px"
);??
?????????????
}??
</SCRIPT>??
<BODY>??
<Textarea?id="txt"
?height="150"
>sdf</textarea><INPUT??type="button"
??value="计算内容宽度"
??onClick="test(txt)"
>??
</BODY>
//无模式的提示框
function
?modelessAlert(Msg)
{
???window.showModelessDialog("javascript:alert(\""
+escape(Msg)+"\");window.close();"
,""
,"status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;"
);
}
//屏蔽按键
<html>
<head>
??<meta?http-equiv="Content-Type"
?content="text/html;?charset=gb2312"
>
??<noscript><meta?http-equiv="refresh"
?content="0;url=about:noscript"
></noscript>
??<title>屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键</title>
</head>
<body>
<script?language="Javascript"
><!--
??//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
??//Author:?meizz(梅花雨)?2002-6-18
function
?document.oncontextmenu(){event.returnValue=false
;}//屏蔽鼠标右键
function
?window.onhelp(){return
?false
}?//屏蔽F1帮助
function
?document.onkeydown()
{
??if
?((window.event.altKey)&&
??????((window.event.keyCode==37)||???//屏蔽?Alt+?方向键?←
???????(window.event.keyCode==39)))???//屏蔽?Alt+?方向键?→
??{
?????alert("不准你使用ALT+方向键前进或后退网页!"
);
?????event.returnValue=false
;
??}
?????/*?注:这还不是真正地屏蔽?Alt+?方向键,
?????因为?Alt+?方向键弹出警告框时,按住?Alt?键不放,
?????用鼠标点掉警告框,这种屏蔽方法就失效了。以后若
?????有哪位高手有真正屏蔽?Alt?键的方法,请告知。*/
??if
?((event.keyCode==8)??||?????????????????//屏蔽退格删除键
??????(event.keyCode==116)||?????????????????//屏蔽?F5?刷新键
??????(event.ctrlKey?&&?event.keyCode==82)){?//Ctrl?+?R
?????event.keyCode=0;
?????event.returnValue=false
;
?????}
??if
?(event.keyCode==122){event.keyCode=0;event.returnValue=false
;}??//屏蔽F11
??if
?(event.ctrlKey?&&?event.keyCode==78)?event.returnValue=false
;???//屏蔽?Ctrl+n
??if
?(event.shiftKey?&&?event.keyCode==121)event.returnValue=false
;??//屏蔽?shift+F10
??if
?(window.event.srcElement.tagName?==?"A"
?&&?window.event.shiftKey)?
??????window.event.returnValue?=?false
;?????????????//屏蔽?shift?加鼠标左键新开一网页
??if
?((window.event.altKey)&&(window.event.keyCode==115))?????????????//屏蔽Alt+F4
??{
??????window.showModelessDialog("about:blank"
,""
,"dialogWidth:1px;dialogheight:1px"
);
??????return
?false
;
??}
}
</script>
屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键
</body>
</html>
//屏蔽打印
<style>
@media print{
* {display:none}
}
</style>
//移动的图层,拖动
1.<span?style='position:absolute;width:200;height:200;background:red'?onmousedown=MouseDown(this
)?onmousemove=MouseMove()?onmouseup=MouseUp()>meizz</span>
<script?language=javascript>
var
?Obj;
function
?MouseDown(obj)
{
??Obj=obj;
??Obj.setCapture();
??Obj.l=event.x-Obj.style.pixelLeft;
??Obj.t=event.y-Obj.style.pixelTop;
}
function
?MouseMove()
{
??if
(Obj!=null
)
??{
????Obj.style.left?=?event.x-Obj.l;
????Obj.style.top?=?event.y-Obj.t;
??}
}
function
?MouseUp()
{
??if
(Obj!=null
)
??{
????Obj.releaseCapture();
????Obj=null
;
??}
}
</script>
2.
<div?id="myDiv"
?src="logo.gif"
?ondrag="doDrag();"
?onmouseover="this.style.cursor='hand'"
?style="position:absolute;left=100;top=100;"
?onmousedown="doMouseDown();"
>
<a?href="#"
?onclick="return?false"
><h1>wlecome</h1></a>
</div>
<script?language="JavaScript"
?type="text/javascript"
>
var
?orgMouseX;
var
?orgMouseY;
var
?orgObjX;
var
?orgObjY;
function
?doDrag()
{
var
?myObject=document.all.myDiv;
var
?x=event.clientX;
var
?y=event.clientY;
myObject.style.left=x-(orgMouseX-orgObjX);
myObject.style.top=y-(orgMouseY-orgObjY);
?
}
function
?doMouseDown()
{
orgMouseX=event.clientX;
orgMouseY=event.clientY;
orgObjX=parseInt(document.all.myDiv.style.left);
orgObjY=parseInt(document.all.myDiv.style.top);
}
</script>
?
//文档状态改变
<iframe?src="a.html"
?id="f"
?name="f"
?scrolling="no"
?frameborder=0?marginwidth=0?marginheight=0></iframe>
<script>
var
?doc=window.frames["f"
].document;
function
?s(){
?if
?(doc.readyState=="complete"
){
??document.all.f.style.height=doc.body.scrollHeight
??document.all.f.style.width=doc.body.scrollWidth
?}
}
doc.onreadystatechange=s
</script>
//刷新后不变的文本框
//访问剪贴板
//操作COOKIE
function
?SetCookie(sName,?sValue)
{
?document.cookie?=?sName?+?"="
?+?escape(sValue)?+?";?"
;
}
function
?GetCookie(sName)
{
?var
?aCookie?=?document.cookie.split(";?"
);
?for?(var
?i=0;?i?<?aCookie.length;?i++)
?{
??
??var
?aCrumb?=?aCookie[i].split("="
);
??if
?(sName?==?aCrumb[0])?
??return
?unescape(aCrumb[1]);
?}
?
}
function
?DelCookie(sName)
{
document.cookie?=?sName?+?"="
?+?escape(sValue)?+?";?expires=Fri,?31?Dec?1999?23:59:59?GMT;"
;
}
//setTimeout增加参数
<script>
var
?_st?=?window.setTimeout;
window.setTimeout?=?function
(fRef,?mDelay)?{
?if
(typeof?fRef?==?'function
'){
??var
?argu?=?Array
.prototype.slice.call(arguments,2);
??var
?f?=?(function
(){?fRef.apply(null
,?argu);?});
??return
?_st(f,?mDelay);
?}
?return
?_st(fRef,mDelay);
}
function
?test(x){
?alert(x);
}
window.setTimeout(test,1000,'fason');
</script>
//自定义的apply,call
Function.prototype.apply?=?function
?(obj,?argu)?{
?if
?(obj)?obj.constructor.prototype._caller?=?this
;?
?var
?argus?=?new
?Array
();
?for?(var
?i=0;i<argu.length;i++)
??argus[i]?=?"argu["
?+?i?+?"]"
;
?var
?r;
?eval("r?=?"
?+?(obj???("obj._caller("
?+?argus.join(","
)?+?");"
)?:?("this("
?+?argus.join(","
)?+?");"
)));
?return
?r;
};
Function.prototype.call?=?function
?(obj)?{
?var
?argu?=?new
?Array
();
?for?(var
?i=1;i<arguments.length;i++)
??argu[i-1]?=?arguments[i];
?return
?this
.apply(obj,?argu);
};???????
//下载文件
function
?DownURL(strRemoteURL,strLocalURL)
{
?try
?{
??var
?xmlHTTP=new
?ActiveXObject
("Microsoft.XMLHTTP"
);
??xmlHTTP.open("Get"
,strRemoteURL,false
);
??xmlHTTP.send();
??var
?adodbStream=new
?ActiveXObject
("ADODB.Stream"
);
??adodbStream.Type=1;//1=adTypeBinary
??adodbStream.Open();
??adodbStream.write(xmlHTTP.responseBody);
??adodbStream.SaveToFile(strLocalURL,2);
??adodbStream.Close();
??adodbStream=null
;
??xmlHTTP=null
;
??
?}
?catch
(e)
?{
??window.confirm("下载URL出错!"
);
?}
?//window.confirm("下载完成."
);
}
//检验连接是否有效
//组件是否安装
isComponentInstalled("{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}", "componentID"))
//检查网页是否存在
function
?CheckURL(URL)
{
??var
?xmlhttp?=?new
?ActiveXObject
("Microsoft.XMLHTTP"
);
??xmlhttp.Open("GET"
,URL,?false
);
??try
??{?
????xmlhttp.Send();?
????var
?result?=?xmlhttp.status;
??}
??catch
(e)?{return
(false
);?}
??if
(result==200)
??{?
????return
?true
;
??}
??xmlhttp?=?null
;
??return
?false
;
}