用了js那么久了,偶感js给页面带来的快感不经欣慰,但是由于现在的浏览器五花八门,有如万花筒变化莫测,在ie上明明是好的,在firefox上确出现了问题,在搜狗上确又是好的,由于浏览器的版本不同又或多或少出现一些bug,而不懂程序的测试员们来说,以为小小修改就会好,岂不知这一修改一调试又嘚发上大半时间。唉,废话少说了,来说一个经典例子吧,也可以给大家日后工作中带来方便。下面就拿:JS扑捉一个按钮事件之外的其他事件来举例:
event我们都知道这代表事件,但是不同的浏览器区别就大了,拿IE,FireFox来说:event 在ie中表示:window.event ; firefox上表示:event (或者firefox要是不行,还可以通过方法来表示如:
function 产生event(){ //同时兼容ie和ff的写法,取事件对象
alert(arguments[0] || window.event) // ie 和 ff下,都显示 "[object]"
var evt=arguments[0] || window.event
var element=evt.srcElement || evt.target //在 ie和ff下
alert(element.id) }
)要是还是不行的话,最佳解决办法,就是在事件里加入参数event这样就完全ok
言归正传下面用示例说话:
做一个除了点击id为txtContents或者btnOks的按钮提示点击位置正确,点击网页其他的地方就提示点击的位置不正确的小应用,敬请关注代码如下:
/*引用JQuery*/
<script type="text/javascript">
/*文档就绪函数ready*/
$(document).ready(function(){
document.body.οnclick=showInfo; //文档其他地方的点击事件
});
function showInfo(event){
var _event=event?event:window.event; //这样是为了在IE或者Firefox下调用event对象
//firefox下得到事件源是:event.target
var _target=_event.target?_event.target:_event.srcElement; ////这样是为了在IE或者Firefox下得到事件源
var _id=_target.id;
if(_id=="")
{
_id=_target.parentNode.id;
}
// alert(_id);
if(_id!=="txtContents" && _id!=="btnOks")
{
alert("请点击正确的位置");
}
else
{
alert("点击正确!");
}
}
</script>
哈哈,,相信大家看过了之后对弹出div层,点击其他地方隐藏弹出的div层不就小意思了!