兼容IE和Firefox的event对象

兼容IE和Firefox的event对象,第1张

尊敬的用户,您好!很高兴为您答疑

这是一个典型的事件对象兼容的问题,重写是其中一个解决办法。

但是一旦重写,您的代码在多平台上依然会出现兼容性的问题。所以最佳的解决办法是使用jquery等js框架,该类框架对于跨内核的兼容进行了最佳优化,免除了您在跨内核时因为兼容带来的额外工作里和运行风险。

希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

<html>

<head>

<script type="text/javascript">

    function clickHandle(e){

        var obj = esrcElement  esrcElement : etarget;

        alert(objvalue);

    }

    function clickHandle1(_this){

        alert(_thisvalue);

    }

    function clickHandle2(){

        var e = documentall  windowevent : null;

        if(!e){

            var func = clickHandle2caller;

            while(func!=null){  

                var arg0 = funcarguments[0]; 

                if(arg0) 

                { 

                    if((arg0constructor==Event || arg0constructor ==MouseEvent) || 

(typeof(arg0)=="object" && arg0preventDefault && arg0stopPropagation))

                    {  

                        e = arg0;

                        break;

                    }

                }     

            } 

        }

        var obj = esrcElement  esrcElement : etarget;

        alert(objvalue);

    }

</script>

</head>

<body>

    <input type="button" value="按钮1" onclick="clickHandle(event)" />

    <input type="button" value="按钮2" onclick="clickHandle(event)" />

    <input type="button" value="按钮3" onclick="clickHandle(event)" />

    <br />

    <input type="button" value="按钮1" onclick="clickHandle1(this)" />

    <input type="button" value="按钮2" onclick="clickHandle1(this)" />

    <input type="button" value="按钮3" onclick="clickHandle1(this)" />

    <br />

    <input type="button" value="按钮1" onclick="clickHandle2()" />

    <input type="button" value="按钮2" onclick="clickHandle2()" />

    <input type="button" value="按钮3" onclick="clickHandle2()" />

</body>

</html>

第一组按钮传递了event对象,根据event对象可以获取事件源对象。

因为IE里面的event只有srcElement对象,

而chrome和火狐里面的event只有target对象,所以为了兼容就写成

var obj = esrcElement  esrcElement : etarget;

srcElement和target都是事件源对象。

第二组按钮直接把本身传递进去了,所以参数就是源对象。

第三组按钮什么都没传递,所以要手动获取到event对象之后再按第一组按钮的方法做。

因为IE里面直接可以用windowevent获取event对象,而其他浏览器不行。

下面的一个while就是循环得到event对象的,可能跟你解释一下下说不清楚。

所以你就自己找资料吧。

尊敬的用户,您好!很高兴为您答疑。

1、您事件绑定的代码没有问题,火狐完全可以支持onclick事件,问题出在您绑定的事件的函数内;

2、这类对象存在跨浏览器兼容的问题,建议您沿着这个思路进行问题分析。

据您的问题来看,您应该是js的初学者,如果您在学习firefox下的js编程,您首先要学会如何使用火狐的开发者调试功能,您所遇到的问题都是可以通过分析控制台的输出进行分析定位和解决的。

希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

通过这个even,可以获取到eventtarget,点击的对象等等属性。

event详情:

1、event代表事件的状态,例如触发event对象的元素、鼠标的位置及状态、按下的键等等。

2、event对象只在事件发生的过程中才有效。

3、至于event这个参数传不传,是为了兼容浏览器。

4、在IE下,windowevent是有效的,所以可以不用传event参数,Firefox下没windowevent这个对象,event只会通过参数传递进来。

events

你检查一下是否click/hover/mouseover的默认event没有传进去?

function tt(event)

{

alert(event);

}

在chrome、firefox等浏览器中,event对象可从事件函数的参数中传入。ie8中须从window对象中获取

$("#btn")click(function(e) {

var event = e | windowevent;

})

在ie8中,不支持etarget

你这个可以先从window中获取event对象后,再调用

preventDefault方法就好了

例如:

$("button")click(function(e) {

var event = e | windowevent;

if(epreventDefault) {

event preventDefault();

}else{

event returnValue = false;

}

});

将even(事件)作为参数,就是这个“点击”事件,通过这个even,可以获取到eventtarget,就是点击的对象等等属性。PS:那个even参数可加可不加,需要用到的时候就加。

<body onmousedown="whichButton(event)"><p>请在文档中点击鼠标。一个消息框会提示出您点击了哪个鼠标按键。

防水材料:

eVENT防水透气面料技术说明

eVENT防水纺织品技术通过经久耐用的表膜来排放汗液蒸气, 使您的鞋子的内部保持干燥,让您获得清爽的接触感觉。

eVENT独有的“直接透气”特性所具备的透气性可达其最强竞争对手产品透气性的两倍,并且100%防水。HI-TEC海泰客户外装备便是专注于eVENT防水面料的户外装备厂商。

百度百科-event (防水材料及计算机专业术语)

以上就是关于兼容IE和Firefox的event对象全部的内容,包括:兼容IE和Firefox的event对象、javascript中,我把几个按钮的onClick都设置成同一个函数,当点鼠标时,怎样能知道是哪个按钮被点了、JS window.event.target获取火狐浏览器的事件源对象吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9789966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存