window是javascript的一个非常重要的核心对象。对于可以打开多个页面的浏览器(比如IE7等以上版本,或是FireFox,Opera……)window只针对当前的客户端窗体有效。下面介绍以下window的一些重要属性以及应用:
【屏蔽右键】
某些网站不允许复制,怎么办呢?办法就是屏蔽鼠标右键。代码可以这样写(注意:event.button属性必须且只能和mouse相关的事件——比如onmouseup/onmousedown/onmouseover使用)。
<body onmousedown="disableRightClick()"> <p> 点击此区域将无法弹出右键 </p> </body>
脚本:
function disableRightClick() { //右键在IE为2 if (event.button == 2) { alert("禁止使用右键!");
return false;
}
}
以上方法在IE中有效,Chrome无效(会弹出警告框和右键菜单)。要禁用几乎全部浏览器的鼠标右键,可以使用document.oncontentmenu属性:
<head> <title></title> <script src="MyJavaScript.js" type="text/javascript"></script> <script> document.oncontextmenu = function () { alert("禁止右键!"); return false;}; </script> </head> <body> </body>
注意:由于oncontentmenu是属性,所以在绑定一个匿名事件的时候必须有返回值(return false)不能省略!
这里顺便说一声:任何Html标签的onXXX事件可以绑定一个匿名事件,同样也可以绑定一个已定义的js函数。该函数根据实际情况可以选择有或者没有返回值。
【Html文本框只能输入数字】
对于限制某些内容在文本框内的输入,可以使用window.event.keyCode配合(限于onkeypress/onkeydown/onkeyup)中
例如以下文本框只允许输入数字:
<script type="text/javascript"> function AutoCheck() { var code = window.event.keyCode if (!(code >= 48 && code <= 57)) { return false; } } </script>
对应Html:
<input type="text" id="myText" onkeypress="return AutoCheck(event);" />
注意input标签中的return不能省略,因为该函数有返回值(如果省略会导致该事件继续执行,因为事件没有被取消)。
不过当把js语句中的return false改成window.event.returnValue=false;的时候是可以省略input标签中的return的,究其原因是因为event.returnValue赋布尔类型的值会决定该事件是否被执行(具体来说,我个人认为应该是阻止事件结果的产生,并不是取消事件!)。
进一步证明,现在我写这样的代码:
<script type="text/javascript"> function AutoCheck(event) { event.returnValue = false; alert("OK"); } </script>
对应Html中:
<input type="text" id="myText" onkeypress="AutoCheck(event);" />
注意:当按下任意键的时候,该事件仍然被触发(弹出OK对话框,说明该事件并没有被取消,而是事件导致的结果——本来应该在文本框中输入的内容字符不能被输入了!)
而如果使用return false取代event.returnValue的话则不仅框不能弹出,而且什么也输入不了(因为return false也会取消事件的结果,并且因为return直接向事件属性返回一个布尔值,最终后继事件代码无法执行;相对而言,event.returnValue只是取消当前事件执行的结果的发生,并不影响后继代码的执行)。