1,事件
<script type="text/javascript">
function bodymousedown() {
alert("网页被点坏了,赔吧!");
alert("逗你玩的!");
}
</script>
<body onmousedown="bodymousedown()">
bodymousedown后的括号不能丢( onmousedown="bodymousedown"),因为表示onmousedown事件发生时调用bodymousedown函数,而不是onmousedown事件的响应函数是bodymousedown。
2,动态设置事件
可以在代码中动态设置事件响应函数,就像.Net中btn.Click+=一样
function f1() {
alert("1");
}
function f2(){
alert("2");
}
<inputtype="button" onclick="document.ondblclick=f1" value="关联事件1"/>//注意f1不要加括号。如果加上括号就变成了执行f1函数,并且将函数的返回值复制给document.ondblclick
<inputtype="button" onclick="document.ondblclick=f2" value="关联事件2"/>
3.window事件
window对象代表当前浏览器窗口,使用window对象的属性、方法的时候可以省略window,比如window.alert('a')可以省略成alert('aa')。
(1)alert方法,弹出消息对话框
(2)confirm方法,显示“确定”、“取消”对话框,如果按了【确定】按钮,就返回true,否则就false
if (confirm("是否继续?")) {
alert("确定");
}
else {
alert("取消");
}
setInterval("alert('hello')", 5000);
varintervalId =setInterval("alert('hello')", 5000);
clearInterval(intervalId);
vartimeoutId =setTimeout("alert('hello')", 2000);
<bodyοnbefοreunlοad="window.event.returnValue='真的要放弃发帖退出吗?'">。显示的文字随浏览器版本而有差异。
5,其他事件
除了有特有的属性之外,当然还有通用的HTML元素的事件:onclick(单击)、ondblclick(双击)、onkeydown(按键按下)、onkeypress(点击按键)、onkeyup(按键释放)、onmousedown(鼠标按下)、onmousemove(鼠标移动)、onmouseout(鼠标离开元素范围)、onmouseover(鼠标移动到元素范围)、onmouseup(鼠标按键释放)等
6,window对象的属性
• window.location.href='http://www.itcast.cn',重新导向新的地址,和navigate方法效果一样。window.location.reload() 刷新页面
• window.event是非常重要的属性,用来获得发生事件时的信息,事件不局限于window对象的事件,所有元素的事件都可以通过event属性取到相关信息。类似于winForm中的e(EventArg).
– altKey属性,bool类型,表示发生事件时alt键是否被按下,类似的还有ctrlKey、shiftKey属性,例子 <input type="button" value="点击" οnclick="if(event.altKey){alert('Alt点击')}else{alert('普通点击')}" /> ;
– clientX、clientY 发生事件时鼠标在客户区的坐标;screenX、screenY 发生事件时鼠标在屏幕上的坐标;offsetX、offsetY 发生事件时鼠标相对于事件源(比如点击按钮时触发onclick)的坐标。
– returnValue属性,如果将returnValue设置为false,就会取消默认事件的处理。在超链接的onclick里面禁止访问href的页面。在表单校验的时候禁止提交表单到服务器,防止错误数据提交给服务器、防止页面刷新。
– srcElement,获得事件源对象。几个事件共享一个事件响应函数用。
– keyCode,发生事件时的按键值。
– button,发生事件时鼠标按键,1为左键,2为右键,3为左右键同时按。<body οnmοusedοwn="if(event.button==2){alert('禁止复制');}">
– (*)screen对象,屏幕的信息
– alert("分辨率:" + screen.width + "*" +screen.height);
– if (screen.width < 1024 ||screen.height < 768) {
– alert("分辨率太低!");
– }
– clipboardData对象,对粘贴板的操作。clearData("Text")清空粘贴板;getData("Text")读取粘贴板的值,返回值为粘贴板中的内容;setData("Text",val),设置粘贴板中的值。
– 案例:复制地址给友好。<inputtype="button" value="推荐给好友"οnclick="clipboardData.setData('Text','推荐给你一个网站,很好玩'+location.href);alert('已经将网址放到粘贴板中,发给你的好友即可');"/>
–
– 当复制的时候body的oncopy方法被触发,直接return false就是禁止复制。<body οncοpy="alert('禁止复制!');returnfalse;"
– 很多元素也有oncopy、onpaste事件:
– 案例:禁止粘贴帐号。帐号:<inputtype="text" /><br />
重复帐号:<input type="text" οnpaste="alert('为保证帐号的正确,请勿粘贴帐号');return false;" />
在网站中复制文章的时候,为了防止那些拷贝党不添加文章来源,自动在复制的内容后添加版权声明。
function modifyClipboard() {
clipboardData.setData('Text',clipboardData.getData('Text') + '本文来自专区,转载请注明来源。' + location.href);
}
οncοpy="setTimeout('modifyClipboard()',100)"。用户复制动作发生0.1秒以后再去改粘贴板中的内容。100ms只是一个经常取值,写1000、10、50、200……都行。不能直接在oncopy里修改粘贴板。
不能直接在oncopy中执行对粘贴板的操作,因此设定定时器,0.1秒以后执行,这样就不再oncopy的执行调用栈上了。