JS事件总结
JS事件总结
事件源对象
event.srcElement.tagName
event.srcElement.type
捕获释放
event.srcElement.setCapture();
event.srcElement.releaseCapture();
事件按键
event.keyCode
event.shiftKey
event.altKey
event.ctrlKey
事件返回值
event.returnVal?
鼠标位置
event.x
event.y
窗体活动元素
document.activeElement
绑定事件
document.captureEvents(Event.KEYDOWN);
访问窗体元素
document.all("txt").focus();
document.all("txt").select();
窗体命令
document.execCommand
窗体COOKIE
document.cookie
菜单事件
document.oncontextmenu
创建元素
document.createElement("SPAN");
根据鼠标获得元素:
document.elementFromPoint(event.x,event.y).tagName=="TD
document.elementFromPoint(event.x,event.y).appendChild(ms)
窗体图片
document.images[索引]
窗体事件绑定
document.onmousedown=scrollwindow;
元素
document.窗体.elements[索引]
对象绑定事件
document.all.xxx.detachEvent('onclick',a);
插件数目
navigator.plugins
取变量类型
typeof($js_libpath)?==?"undefined"
下拉框
下拉框.options[索引]
下拉框.options.length
查找对象
document.getElementsByName("r1");
document.getElementById(id);
定时
timer=setInterval('scrollwindow()',delay);
clearInterval(timer);
UNCODE编码
escape()?,unescape
父对象
obj.parentElement(dhtml)
obj.parentNode(dom)
交换表的行
TableID.moveRow(2,1)
替换CSS
document.all.csss.href?=?"a.css";
并排显示
display:inline
隐藏焦点
hidefocus=tr?
根据宽度换行
style="word-break:break-all"
自动刷新
简单邮件
快速转到位置
obj.scrollIntoView(tr?)
锚
anchors
网页传递参数
location.search();
可编辑
obj.contenteditable=tr?
执行菜单命令
obj.execCommand
双字节字符
/[^\x00-\xff]/
汉字
/[\一-\龥]/
让英文字符串超出表格宽度自动换行
word-wrap:?break-word;?word-break:?break-all;
透明背景
获得style内容
obj.style.cssText
HTML标签
document.documentElement.innerHTML
第一个style标签
document.styleSheets[0]
style标签里的第一个样式
document.styleSheets[0].rules[0]
防止点击空链接时,页面往往重置到页首端。
word
上一网页源
asp:
req?st.servervariables("HTTP_REFERER")
javascript:
document.referrer
释放内存
CollectGarbage();
禁止右键
document.oncontextmenu?=?function()?{?return?false;}
禁止保存
<iframe src="*.htm"></iframe>
禁止选取
favicon.ico?名字最好不变16*16的16色,放虚拟目录根目录下
收藏栏图标
查看源码
关闭输入法
自动全选
ENTER键可以让光标移到下一个输入框
文本框的默认值
title换行
obj.title?=?"123?sdfs?"
获得时间所代表的微秒
var?n1?=?new?Date("2004-10-10".replace(/-/g,?"\/")).getTime()
窗口是否关闭
win.closed
checkbox扁平
获取选中内容
document.selection.createRange().duplicate().text
自动完成功能
打开该功能
关闭该功能
窗口最大化
无关闭按钮IE?window.open("aa.htm",?"meizz",?"fullscreen=7");
统一编码/解码?alert(decodeURIComponent(encodeURIComponent("http://你好.com?as=?hehe")))
encodeURIComponent对":"、"/"、";"?和?"?"也编码
高级应用(一)
//各种尺寸
s?+=?"\r\n网页可见区域宽:"+?document.body.clientWidth;
s?+=?"\r\n网页可见区域高:"+?document.body.clientHeight;
s?+=?"\r\n网页可见区域高:"+?document.body.offsetWeight?+"?(包括边线的宽)";
s?+=?"\r\n网页可见区域高:"+?document.body.offsetHeight?+"?(包括边线的宽)";
s?+=?"\r\n网页正文全文宽:"+?document.body.scrollWidth;
s?+=?"\r\n网页正文全文高:"+?document.body.scrollHeight;
s?+=?"\r\n网页被卷去的高:"+?document.body.scrollTop;
s?+=?"\r\n网页被卷去的左:"+?document.body.scrollLeft;
s?+=?"\r\n网页正文部分上:"+?window.screenTop;
s?+=?"\r\n网页正文部分左:"+?window.screenLeft;
s?+=?"\r\n屏幕分辨率的高:"+?window.screen.height;
s?+=?"\r\n屏幕分辨率的宽:"+?window.screen.width;
s?+=?"\r\n屏幕可用工作区高度:"+?window.screen.availHeight;
s?+=?"\r\n屏幕可用工作区宽度:"+?window.screen.availWidth;
//过滤数字
=48&&event.keyCode<=57||(this.val?.indexOf('.')<0?event.keyCode==46:false)"?onpaste="return?!clipboardData.getData('text').match(/\D/)"?ondragenter="return?false">
//特殊用途
//不缓存
//正则匹配
匹配中文字符的正则表达式:?[\一-\龥]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s|?]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)?\/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w-?./?%&=]*)?
以下是例子:
利用正则表达式限制网页表单里的文本框输入内容:
用 正则表达式限制只能输入中文:onkeyup="val?=val?.replace(/[^\一-\龥]/g,'')"? onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^一-\龥]/g,''))"
1.用正则表达式限制只能输入全角字符:?onkeyup="val?=val ?.replace(/[^\?-\?]/g,'')"?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\?-\?]/g,''))"
2.用正则表达式限制只能输入数字:onkeyup="val?=val?.replace(/[^\d]/g,'')& nbsp;"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
3.用正则表达式限制只能输入数字和英文:onkeyup="val?=val?.replace(/[\W]/g,'')& nbsp;"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
//消除图像工具栏
or
//无提示关闭
function?Close()
{
var? =navigator.userAgent
var?ie=navigator.appName=="Microsoft?Internet?Explorer"?tr?:false
if(ie)
{
var?IEversion=parseFloat( .s string( .indexOf("MSIE?")+5, .indexOf(";", .indexOf("MSIE?"))))
if(IEversion<?5.5)
{
var?str?=?''
document.body.insertAdjacentHTML("beforeEnd",?str);
document.all.noTipClose.Click();
}
else
{
window.opener?=null;
window.close();
}
}
else
{
window.close()
}
}
//取得控件得绝对位置(1)
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
}
//获得控件的绝对位置(2)
oRect?=?obj.getBoundingClientRect();
oRect.left
oRect.
//最小化,最大化,关闭
//光标停在文字最后
function?cc()
{
var?e?=?event.srcElement;
var?r?=e.createTextRange();
r.moveStart('character',e.val?.length);
r.collapse(tr?);
r.select();
}
//页面进入和退出的特效
进入页面
推出页面
这个是页面被载入和调出时的一些特效。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
//网页是否被检索?
其中属性值有以下一些:
属性值为"all":?文件将被检索,且页上链接可被查询;
属性值为"none":?文件不被检索,而且不查询页上的链接;
属性值为"index":?文件将被检索;
属性值为"follow":?查询页上的链接;
属性值为"noindex":?文件不检索,但可被查询链接;
属性值为"nofollow":
//打印分页?page1
page2
//设置打印
classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"
>
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?=?tr?
factory.printing.paperSize?=?"A4"
factory.printing.paperSource?=?"Man l?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(tr?,?frame)?//?print?with?prompt
}
具体使用手册,更多信息,点这里
//自带的打印预览
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)?关闭窗体无提示
.Noprint{display:none;}
.PageNext{page-break-after:?always;}
?
//去掉打印时的页眉页脚
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){}
}
//浏览器验证
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;
}
//计算内容宽和高
function?test(obj)
{
var?range?=?obj.createTextRange();
alert("内容区宽度:?"?+?range.boundingWidth
+?"px\r\n内容区高度:?"?+?range.boundingHeight?+?"px");
}
sdf
//无模式的提示框?function?modelessAlert(Msg)
{
window.showModelessDialog("javascript:alert(\""+escape(Msg)+"\");window.close();","","status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;");
}
//屏蔽按键
<meta http-equiv="refresh" content="0;url=about:noscript">
屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键
//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
//Author:?meizz(梅花雨)?2002-6-18
function?document.oncontextmenu(){event.returnVal?=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.returnVal?=false;
}
/*?注:这还不是真正地屏蔽?Alt+?方向键,
因为?Alt+?方向键弹出警告框时,按住?Alt?键不放,
用鼠标点掉警告框,这种屏蔽方法就失效了。以后若
有哪位高手有真正屏蔽?Alt?键的方法,请告知。*/
if?((event.keyCode==8)?||?//屏蔽退格删除键
(event.keyCode==116)||?//屏蔽?F5?刷新键
(event.ctrlKey?&&?event.keyCode==82)){?//Ctrl?+?R
event.keyCode=0;
event.returnVal?=false;
}
if?(event.keyCode==122){event.keyCode=0;event.returnVal?=false;}?//屏蔽F11
if?(event.ctrlKey?&&?event.keyCode==78)?event.returnVal?=false;?//屏蔽?Ctrl+n
if?(event.shiftKey?&&?event.keyCode==121)event.returnVal?=false;?//屏蔽?shift+F10
if?(window.event.srcElement.tagName?==?"A"?&&?window.event.shiftKey)
window.event.returnVal??=?false;?//屏蔽?shift?加鼠标左键新开一网页
if?((window.event.altKey)&&(window.event.keyCode==115))?//屏蔽Alt+F4
{
window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
return?false;
}
}
屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键
//屏蔽打印
@media?print{
*?{display:none}
}
//移动的图层,拖动
1.meizz
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;
}
}
2.
wlecomevar?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);
}
//文档状态改变
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
//刷新后不变的文本框?
.sHistory?{behavior:url(#default#savehistory);}
//访问剪贴板
event.dataTransfer.setData("URL",?oImage.src);
sImageURL?=?event.dataTransfer.getData("URL")
(2)普通访问
window.clipboardData.setData("Text",oSource.innerText);
window.clipboardData.getData("Text");
//操作COOKIE
function?SetCookie(sName,?sVal?)
{
document.cookie?=?sName?+?"="?+?escape(sVal?)?+?";?";
}
function?GetCookie(sName)
{
var?aCookie?=?document.cookie.split(";?");
for?(var?i=0;?i?<?aCookie.length;?i++)
{
var?aCrumb?=?aCookie.split("=");
if?(sName?==?aCrumb[0])
return?unescape(aCrumb[1]);
}
}
function?DelCookie(sName)
{
document.cookie?=?sName?+?"="?+?escape(sVal?)?+?";?expires=Fri,?31?Dec?1999?23:59:59?GMT;";
}
//setTimeout增加参数
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');
//自定义的apply,call
Function.prototype.apply?=?function?(obj,?argu)?{
if?(obj)?obj.constr tor.prototype._caller?=?this;
var?argus?=?new?Array();
for?(var?i=0;i
argus?=?"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
argu[i-1]?=?arguments;
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("下载完成.");
}
//检验连接是否有效
function?getXML(URL)
{
var?xmlhttp?=?new?ActiveXObject("microsoft.xmlhttp");
xmlhttp.Open("GET",URL,?false);
try
{
xmlhttp.Send();
}
catch(e){}
finally
{
var?result?=?xmlhttp.responseText;
if(result)
{
if(xmlhttp.Status==200)
{
return(tr?);
}
else
{
return(false);
}
}
else
{
return(false);
}
}
}
//POST代替FORM
Function?URLEncoding(vstrIn)
strReturn?=?""
For?i?=?1?To?Len(vstrIn)
ThisChr?=?Mid(vStrIn,i,1)
If?Abs(Asc(ThisChr))?<?&HFF?Then
strReturn?=?strReturn?&?ThisChr
Else
innerCode?=?Asc(ThisChr)
If?innerCode?<?0?Then
innerCode?=?innerCode?+?&H10000
End?If
Hight8?=?(innerCode?And?&HFF00)\?&HFF
Low8?=?innerCode?And?&HFF
strReturn?=?strReturn?&?"%"?&?Hex(Hight8)?&?"%"?&?Hex(Low8)
End?If
Next
URLEncoding?=?strReturn
End?Function
Function?bytes2BSTR(vIn)
strReturn?=?""
For?i?=?1?To?LenB(vIn)
ThisCharCode?=?AscB(MidB(vIn,i,1))
If?ThisCharCode?<?&H80?Then
strReturn?=?strReturn?&?Chr(ThisCharCode)
Else
NextCharCode?=?AscB(MidB(vIn,i+1,1))
strReturn?=?strReturn?&?Chr(CLng(ThisCharCode)?*?&H100?+?CInt(NextCharCode))
i?=?i?+?1
End?If
Next
bytes2BSTR?=?strReturn
End?Function
dim?strA,oReq
strA?=?URLEncoding("s mit1=S mit&text1=中文")
set?oReq?=?CreateObject("MSXML2.XMLHTTP")
oReq.open?"POST","http://ServerName/VDir/TstResult.asp",false
oReq.setReq?stHeader?"Content-Length",Len(strA)
oReq.setReq?stHeader?"CONTENT-TYPE","application/x-www-form-urlencoded"
oReq.send?strA
msgbox?bytes2BSTR(oReq.responseBody)
//readyState是xmlhttp返回数据的进度,0=载入中,1=未初始化,2=已载入,3=运行中,4=完成
高级应用(二)
//组件是否安装
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?tr?;
}
xmlhttp?=?null;
return?false;
}
//连接数据库
//用?JavaScript?写服务器端连接数据库的代码示例
var?conn?=?new?ActiveXObject("ADODB.Connection");
conn.Open("Provider=SQLOLEDB.1;?Data?Source=localhost;?User?ID=sa;?"
+"Password=;?Initial?Catalog=p s");
var?rs?=?new?ActiveXObject("ADODB.Recordset");
var?sql="select?*?from?authors";
rs.open(sql,?conn);
shtml?=?"";
au_idau_lnameau_fnamephoneaddress?citystatezip
while(!rs.EOF)
{
"?+?rs("au_id")?+?""?+?rs("au_lname")?+?""?+?rs("au_fname")?+?""?+?rs("phone")?+?""?+?rs("address")?+?""?+?rs("city")?+?""?+?rs("state")?+?""?+?rs("zip")?+?"
rs.moveNext;
}
shtml?+=?"";
document.write(shtml);
rs.close();
rs?=?null;
conn.close();
conn?=?null;
//使用数据岛
srno:
times:
"?onclick="xmldate.recordset.moveNext()">
>"?onclick="xmldate.recordset.moveLast()">
20041025-01null
20041101-092004年10月1日2点22分0?秒
//获得参数
search
var?a?=?location.search.s str(1);
if(a.length>0)
{
var?re?=?/([^&]*?)\=([^&]*)/g
var?s?=?a.match(re);
for(var?i=?0;i
{
alert(s);
alert(s.split("=")[1]);
}
}
//-->
//可编辑SELECT
11111111
222222
333333
//设置光标位置
function?getCaret(textbox)
{
var?control?=?document.activeElement;
textbox.focus();
var?rang?=?document.selection.createRange();
rang.setEndPoint("StartToStart",textbox.createTextRange())
control.focus();
return?rang.text.length;
}
function?setCaret(textbox,pos)
{
try
{
var?r?=textbox.createTextRange();
r.moveStart('character',pos);
r.collapse(tr?);
r.select();
}
catch(e)
{}
}
function?selectLength(textbox,start,len)
{
try
{
var?r?=textbox.createTextRange();
r.moveEnd('character',len-(textbox.val?.length-start));
r.moveStart('character',start);
r.select();
}
catch(e)
{//alert(e.description)}
}
function?insertAtCaret(textbox,text)
{
textbox.focus();
document.selection.createRange().text?=?text;
}
//页内查找
function?findInPage(str)
{
var?txt,?i,?found,n?=?0;
if?(str?==?"")
{
return?false;
}
txt?=?document.body.createTextRange();
for?(i?=?0;?i?<=?n?&&?(found?=?txt.findText(str))?!=?false;?i++)
{
txt.moveStart("character",?1);
txt.moveEnd("textedit");
}
if?(found)
{
txt.moveStart("character",?-1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
else
{
if?(n?>?0)
{
n?=?0;
findInPage(str);
}
else
{
alert(str?+?"...?您要找的文字不存在。\n?\n请试着输入页面中的关键字再次查找!");
}
}
return?false;
}
//操作EXECL
function?jStartExcel()?{
var?xls?=?new?ActiveXObject?(?"Excel.Application"?);
xls.visible?=?tr?;
var?newBook?=?xls.Workbooks.Add;
newBook.Worksheets.Add;
newBook.Worksheets(1).Activate;
xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation?=?2;
xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize?=?5;
newBook.Worksheets(1).Columns("A").columnwidth=50;
newBook.Worksheets(1).Columns("A").WrapText?=?tr?;
newBook.Worksheets(1).Columns("B").columnwidth=50;
newBook.Worksheets(1).Columns("B").WrapText?=?tr?;
newBook.Worksheets(1).Range("A1:B1000").NumberFormat?=?"0";
newBook.Worksheets(1).Range("A1:B1000").HorizontalAlignment?=?-4131;
newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex="15";
newBook.Worksheets(1).Cells(1,1).val?="First?Column,?First?Cell";
newBook.Worksheets(1).Cells(2,1).val?="First?Column,?Second?Cell";
newBook.Worksheets(1).Cells(1,2).val?="Second?Column,?First?Cell";
newBook.Worksheets(1).Cells(2,2).val?="Second?Column,?Second?Cell";
newBook.Worksheets(1).Name="My?First?WorkSheet";
}
//自定义提示条
tip
//***********默认设置定义.*********************
tPopWait=50;//停留tWait豪秒后显示提示。
tPopShow=5000;//显示tShow豪秒后关闭提示
showPopStep=20;
popOpacity=99;
//***************内部变量定义*****************
sPop=null;
curShow=null;
tFadeOut=null;
tFadeIn=null;
tFadeWaiting=null;
document.write("");
document.write(".cPopText?{?background-color:?#F8F8F5;color:#000000;?border:?1px?#000000?solid;font-color:?font-size:?12px;?padding-right:?4px;?padding-left:?4px;?height:?20px;?padding-top:?2px;?padding-bottom:?2px;?filter:?Alpha(Opacity=0)}");
document.write("");
document.write("");
function?showPopupText(){
var?o=event.srcElement;
MouseX=event.x;
MouseY=event.y;
if(o.alt!=null?&&?o.alt!=""){o.dypop=o.alt;o.alt=""};
if(o.title!=null?&&?o.title!=""){o.dypop=o.title;o.title=""};
if(o.dypop!=sPop)?{
sPop=o.dypop;
clearTimeout(curShow);
clearTimeout(tFadeOut);
clearTimeout(tFadeIn);
clearTimeout(tFadeWaiting);
if(sPop==null?||?sPop=="")?{
dypopLayer.innerHTML="";
dypopLayer.style.filter="Alpha()";
dypopLayer.filters.Alpha.opacity=0;
}
else?{
if(o.dyclass!=null)?popStyle=o.dyclass
else?popStyle="cPopText";
curShow=setTimeout("showIt()",tPopWait);
}
}
}
function?showIt(){
dypopLayer.className=popStyle;
dypopLayer.innerHTML=sPop;
popWidth=dypopLayer.clientWidth;
popHeight=dypopLayer.clientHeight;
if(MouseX+12+popWidth>document.body.clientWidth)?popLeftAdjust=-popWidth-24
else?popLeftAdjust=0;
if(MouseY+12+popHeight>document.body.clientHeight)?popTopAdjust=-popHeight-24
else?popTopAdjust=0;
dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
dypopLayer.style.filter="Alpha(Opacity=0)";
fadeOut();
}
function?fadeOut(){
if(dypopLayer.filters.Alpha.opacity
dypopLayer.filters.Alpha.opacity+=showPopStep;
tFadeOut=setTimeout("fadeOut()",1);
}
else?{
dypopLayer.filters.Alpha.opacity=popOpacity;
tFadeWaiting=setTimeout("fadeIn()",tPopShow);
}
}
function?fadeIn(){
if(dypopLayer.filters.Alpha.opacity>0)?{
dypopLayer.filters.Alpha.opacity-=1;
tFadeIn=setTimeout("fadeIn()",1);
}
}
document.onmouseover=showPopupText;
//插入文字
document.onclick?=function(){
var?oSource?=?window.event.srcElement;
if(oSource.tagName!="DIV")
return?false;
var?sel?=?document.selection;
if?(sel!=null)?{
var?rng?=?sel.createRange();
if?(rng!=null)
rng.pasteHTML("插入文字");
}
}
//netscapte下操作xml
doc?=?new?ActiveXObject("Msxml2.DOMDocument");
doc?=?new?ActiveXObject("Microsoft.XMLDOM")
->>
doc?=?(new?DOMParser()).parseFromString(sXML,'text/xml')
//禁止FSO
1.注销组件
regsvr32?/u?scrrun.dll
2.修改PROGID
HKEY_CLASSES_ROOT\Scripting.FileSystemObject
Scripting.FileSystemObject
3.对于使用object的用户,修改HKEY_CLASSES_ROOT\Scripting.
//省略号
overflow:?hidden;?text-overflow:ellipsis">
就是比如有一行文字,很长,表格内一行显示不下.
//判断键值
var?ie?=navigator.appName=="Microsoft?Internet?Explorer"?tr?:false;
function?keyDown(e)
{
if(!ie)
{
var?nkey=e.which;
var?iekey='现在是ns浏览器';
var?realkey=String.fromCharCode(e.which);
}
if(ie)
{
var?iekey=event.keyCode;
var?nkey='现在是ie浏览器';
var?realkey=String.fromCharCode(event.keyCode);
if(event.keyCode==32){realkey='\'?空格\''}
if(event.keyCode==13){realkey='\'?回车\''}
if(event.keyCode==27){realkey='\'?Esc\''}
if(event.keyCode==16){realkey='\'?Shift\''}
if(event.keyCode==17){realkey='\'?Ctrl\''}
if(event.keyCode==18){realkey='\'?Alt\''}
}
alert('ns浏览器中键值:'+nkey+'\n'+'ie浏览器中键值:'+iekey+'\n'+'实际键为'+realkey);
}
document.onkeydown?=?keyDown;
//Javascript?Document.
请按任意一个键。。。。//检测media?play版本
var?flash="";
WMPVersion=?oClientCaps.getComponentVersion("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}","ComponentID");
if?(WMPVersion?!=?"")?{
flash?=?"";
var?version?=?WMPVersion.split(",");
var?i;
for?(i?=?0;?i?<?version.length;?i++)?{
if?(i?!=?0)
flash?+=?".";
flash?+=?version;
}
document.write("您的Windows?Media?Player?版本是:"+flash+"
");
}
//图象按比例
//图片按比例缩放
var?flag=false;
function?DrawImage(ImgD){
var?image=new?Image();
var?iwidth?=?80;?//定义允许图片宽度
var?iheight?=?80;?//定义允许图片高度
image.src=ImgD.src;
if(image.width>0?&&?image.height>0){
flag=tr?;
if(image.width/image.height>=?iwidth/iheight){
if(image.width>iwidth){
ImgD.width=iwidth;
ImgD.height=(image.height*iwidth)/image.width;
}else{
ImgD.width=image.width;
ImgD.height=image.height;
}
ImgD.alt=image.width+"×"+image.height;
}
else{
if(image.height>iheight){
ImgD.height=iheight;
ImgD.width=(image.width*iheight)/image.height;
}else{
ImgD.width=image.width;
ImgD.height=image.height;
}
ImgD.alt=image.width+"×"+image.height;
}
}
}
//-->
//细线SELECT
1111
11111111111111
111111111
//Import
function?Import()?{
for(?var?i=0;?i
var?file?=?arguments;
if?(?file.match(/\.js$/i))
document.write('');
else
document.write('@import?\"'?+?file?+?'\"?;');
}
};
//js枚举
function?getComputerName()
{
var?objWMIService?=?GetObject("Winmgmts:root\cimv2");
for(e?=?new?Enumerator(objWMIService)?;?!e.atEnd()?;?e.moveNext())
{
var?getComputer?=?e.item();
return?getComputer.Name;
}
}
//条件编译
/*@cc_on?@*/
/*@if?(@_win32?&&?@_jscript_version>5)
function?window.confirm(str)
{
execScript("n?=?msgbox('"+?str?+"',?257)",?"vbscript");
return(n?==?1);
}
@end?@*/
//取得innerText
var?xmlDoc?=?new?ActiveXObject("Msxml2.DOMDocument.4.0");
var?currNode;
xmlDoc.async?=?false;
xmlDoc.async?=?false;
xmlDoc.loadXML("?你好你阿三?大法?司法等四?");
currNode?=?xmlDoc.documentElement;
var?s?=?currNode.xml;
var?r?=?/\<([^\>\s]*?)[^\>]*?\>([^\<]*?)\<\/\1\>/
var?b?=?s.replace(r,"$2");
alert(b);
//-->
//mergeAttributes?复制所有读/写标签属性到指定元素。
function?fnMerge(){
oSource.children[1].mergeAttributes(oSource.children[0]);
}
ID="oDiv"
ATTRIBUTE1="tr?"
ATTRIBUTE2="tr?"
onclick="alert('click');"
onmouseover="this.style.color='#0000FF';"
onmouseout="this.style.color='#000000';"
>
This?is?a?sample?DIV?element.
This?is?another?sample?DIV?element.
TYPE="button"
VAL?="Merge?Attributes"
onclick="fnMerge()"
>
JavaScript[对象.属性]集锦
SCRIPT?标记
用于包含javascript代码.
语法
属性
LANG GE?定义脚本语言
SRC?定义一个URL用以指定以.JS结尾的文件
windows对象
每个HTML文档的顶层对象.
属性
frames[]?子桢数组.每个子桢数组按源文档中定义的顺序存放.
feames.length?子桢个数.
self?当前窗口.
parent?父窗口(当前窗口是中一个子窗口).
top?顶层窗口(是所有可见窗口的父窗口).
status?浏览器状态窗口上的消息.
defaultStatus?当status无效时,出现在浏览器状态窗口上的缺省消息.
name?内部名,为由window.open()方法打开的窗口定义的名字.
方法
alert("message")?显示含有给定消息的"javascript?Alert"对话框.
confirm("message")?显示含有给定消息的"Confirm"对话框(有一个OK按钮和一个Cancel按钮).如果用户单击OK返回tr?,否则返回false.
prompt("message")?显示一个"prompt"对话框,要求用户根据显示消息给予相应输入.
open("URL","name")?打开一个新窗口,给予一个指定的名字.
close()?关闭当前窗口.
frame对象
它是整个浏览器窗口的子窗口,除了status,defaultStatus,name属性外,它拥有window对象的全部属性.
location对象
含有当前URL的信息.
属性
href?整个URL字符串.
protocol?含有URL第一部分的字符串,如http:
host?包含有URL中主机名:端口号部分的字符串.如//www.cenpok.net/server/
hostname?包含URL中主机名的字符串.如http://www.cenpok.net
port?包含URL中可能存在的端口号字符串.
pathname?URL中"/"以后的部分.如~list/index.htm
hash?"#"号(CGI参数)之后的字符串.
search?"?"号(CGI参数)之后的字符串.
document对象
含有当前文档信息的对象.
属性
title?当前文档标题,如果未定义,则包含"Untitled".
location?文档的全URL.
lastModified?含有文档最后修改日期.
referrer?调用者URL,即用户是从哪个URL链接到当前页面的.
bgColor?背景色(#xxxxxx)
fgColor?前景文本颜色.
linkColor?超链接颜色.
vlinkColor?访问过的超链颜色.
alinkColor?激活链颜色(鼠标按住未放时).
forms[]?文档中form对象的数组,按定义次序存储.
forms.length?文档中的form对象数目.
links[]?与文档中所有HREF链对应的数组对象,按次序定义存储.
links.length?文档中HREF链的数目.
anchors[]?锚(...)数组,按次序定义存储.
anchors.length?文档中锚的数目.
方法
write("string")?将字符串突出给当前窗口.(字符串可以含有HTML标记)
writeln("string")?与write()类似,在结尾追加回车符,只在预定格式文本中(...或...)生效.
clear()?清当前窗口.
close()?关闭当前窗口.
form对象
属性
name
中的NAME属性的字符串值.
method?中METHOD属性的类值,"0"="GET"?,"1"="POST"?.
action?中ACTION属性的字符串值.
target?表格数据提交的目标,与标记中相应属性一致.
elements[index]?elements属性包含form中的各个元素.
length?表格中的元素个数.
方法
s mit()?提交表格.
事件处理器onS mit()?用户单击一个定义好的按钮提交form时运行的代码.
text和textarea对象
属性
name?NAME属性的字符串值.
val??域内容的字符串值.
defaultVal??域内容的初始字符串值.
方法
focus()?设置对象输入焦点.
blur()?从对象上移走输入焦点.
select()?选定对象的输入区域.
事件处理器
onFocus?当输入焦点进入时执行.
onBlur?当域失去焦点时执行.
onSelect?当域中有部分文本被选定时执行.
onChange?当域失去焦点且域值相对于onFocus执行有所改变时执行.
复选框(checkbox)对象
属性
name?NAME属性的字符串值.
val??复选框内容的字符串值.如果设置了,则为"on",否则为"off".
checked?复选框内容的布尔值.如果设置了,则为tr?,否则为false?.
defaultChecked?反映(CHECKED)属性的布尔值(缺省状态).
方法
click()?选定复选框,并使之状态为"on".
事件处理器
onClick?当用户单击Checkbox时执行.
单选按钮(radio)对象
属性
name?NAME属性的字符串值.
length?radio对象中单选按钮的个数.
val??VAL?属性的字符串值.
checked?布尔值,按下为tr?,否则为false?.
defaultChecked?反映CHECKED属性值的布尔值.
方法
click()?选定单选按钮.
事件处理器
onClick?当单选按钮被选定时执行.
select对象
属性
length?select对象中对象的个数.
name?由NAME=属性定义的select对象的内部名.
selectedIndex?select对象中当前被选option的下标.
options?该属性对应于在HTML中定义select对象时标记中的内容,它有如下属性:
text?标记后的文本串.
val??VAL?属性的值,当S mit按钮被按下时,该值被提交.
defaultSelected?反映标记的SELECTED属性的布尔值.
selected?反映option的当前选择状态的布尔值.
事件处理器
onFocus?当输入焦点进入域时执行.
onBlur?当域失去输入焦点时执行.
onChange?当域失去焦点且如果域的值相对于onFocus执行时有所改变,则执行onChange.
Button对象
表格中有三种类型按钮,由标记中的TYPE属性定义:
.s mit?(type="S MIT")
.reset?(type="RESET")
.custom?(type="BUTTON")
所有按钮对象都有如下成分:
属性
val??VAL?属性的字符串值.
name?NAME属性的字符串值.
方法
click()?选定按钮
事件处理器
onClick?当按钮被单击时执行.
s mit和reset对象
属性
val??VAL?=属性的内容.
name?NAME=属性的内容.
方法
click()?选定按钮
事件处理器
onClick?当按钮被单击时执行.
password对象
属性
defaultVal??VAL?=属性的内容.
name?NAME=属性的内容.
val??目前输入password域的数据.
方法
focus()?将焦点带入password域.
blur?将焦点从password域移出.
select()?选定password域中的当前数据,以备修改.
navigator对象
该对象用于确定用户访问时使用的Navigator版本.
属性
appCodeName?相对于用户浏览器的"codename"
appName?相对于用户浏览器的实际名字.
appVersion?相对于用户浏览器的版本号.
userAgent?该属性反映用户浏览器的全部信息.
string对象
JS中DOM事件流总结
一、事件捕获 1、概念
事件捕获:从document到触发事件的那个节点,自上而下的去触发事件。
2、图解
二、事件冒泡 1、概念
事件冒泡:从触发事件的那个节点一直到document,是自下而上的去触发事件。
2、图解
三、DOM事件流 1、概念
DOM事件流相当于将事件捕获与事件冒泡两者结合起来,事件触发的顺序是先进行事件捕获阶段 => 目标元素阶段 => 事件冒泡阶段。
2、图解
3、示例
绑定事件方法(addEventListener)的第三个参数是控制事件触发顺序的,默认为false,即事件冒泡;若为true,即事件捕获。
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>事件</title><style>.boxA{width:200px;height:200px;background-color:blueviolet;}.boxB{width:100px;height:100px;background-color:pink;}.boxC{width:50px;height:50px;background-color:red;}</style></head><body><divclass="boxA"id="boxA"><divclass="boxB"id="boxB"><divclass="boxC"id="boxC">目标</div></div></div><script>letboxA=document.getElementById("boxA");letboxB=document.getElementById("boxB");letboxC=document.getElementById("boxC");//目标元素boxC.addEventListener('click',function(){console.log("target1");},true);boxC.addEventListener('click',function(){console.log("target2");},true);//事件冒泡boxB.addEventListener('click',function(){console.log("bubble1");},false);boxB.addEventListener('click',function(){console.log("bubble2");},false);//事件捕获boxA.addEventListener('click',function(){console.log("capture1");},true);boxA.addEventListener('click',function(){console.log("capture2");},true);</script></body></html>
4、结果
五、事件捕获或事件冒泡的阻止 1、用法
#当在事件流执行过程中,需要阻止后续的事件的执行,可以使用以下语法event.stopPropagation();
2、示例
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>事件</title><style>.boxA{width:200px;height:200px;background-color:blueviolet;}.boxB{width:100px;height:100px;background-color:pink;}.boxC{width:50px;height:50px;background-color:red;}</style></head><body><divclass="boxA"id="boxA"><divclass="boxB"id="boxB"><divclass="boxC"id="boxC">目标</div></div></div><script>letboxA=document.getElementById("boxA");letboxB=document.getElementById("boxB");letboxC=document.getElementById("boxC");//目标元素boxC.addEventListener('click',function(e){console.log("target1");e.stopPropagation();},true);boxC.addEventListener('click',function(){console.log("target2");},true);//事件冒泡boxB.addEventListener('click',function(){console.log("bubble1");},false);boxB.addEventListener('click',function(){console.log("bubble2");},false);//事件捕获boxA.addEventListener('click',function(){console.log("capture1");},true);boxA.addEventListener('click',function(e){console.log("capture2");},true);</script></body></html>
3、结果
五、总结 事件函数执行顺序:捕获阶段的处理函数最先执行,其次是目标阶段的处理函数,最后是冒泡阶段的处理函数。目标阶段的处理函数,先注册的先执行,后注册的后执行。
事件阻止只能阻止后续的阶段事件并且未作用于同一元素上的事件函数。
转自简书:周星星的学习笔记
原文链接:https://www.jianshu.com/p/b47537da0cf5
发表评论