为什么有的事件无法通过代码触发?原生mousedown事件怎么用代码触发?

有一次修改智联招聘上面的学历信息,闲着没事想在控制台通过代码控制修改,结果发现死活无法触发选择学历的下拉框的点击事件,于是查看了下事件来源,最后发现是mousedown事件,太狡猾了。
于是淡定的$().mousedown(),居然还不生效?最后终于找到了一种触发原生mousedown事件的方法:

var e = document.createEvent("MouseEvents");
	e.initEvent("mousedown", true, true);//这里的mousedown可以换成你想触发的行为
	dom.dispatchEvent(e);//这里的dom可以换成你想触发行为的DOM结点

完美,居然就这么实现了
js中添加一个主动触发事件的方法有dispatch。该方法能模拟用户行为,如点击(click)操作等。 标准使用dispatchEvent方法,IE6/7/8则使用fireEvent方法。

dispatchEvent() 方法给节点分派一个合成事件。

语法如下:
dispatchEvent(eventObj)
eventObj 参数是一个描述事件的 ActionScript 对象
在调用 dispatchEvent() 方法之前,必须在代码中对其进行声明,此外,还必须创建一个事件对象以传递给 dispatchEvent()。该事件对象包含侦听器可用来处理该事件的有关信息。

使用时具体流程如下:

creatEvent-------initEvent--------dispatchEvent
最后总结了下兼容ie的写法:

function customTrigger(el ,type){
        try{
            if(el.dispatchEvent){
                var evt = document.createEvent('Event');
                evt.initEvent(type,true,true);
                el.dispatchEvent(evt);
            }else if(el.fireEvent){
                el.fireEvent('on'+type);
            }
        }catch(e){};
};

最后还有个思路,到底怎么防止别人通过代码触发我的点击事件呢?
首先可以写成mousedown事件,其次在事件里面作判断,判断当前鼠标的位置是否在事件绑定元素的范围内,如果不在,则不触发事件~
这样,还有办法触发事件后的逻辑么?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值