safari浏览器实现模拟click点击事件
2017-01-19 09:22
2626 查看
在项目中经常会用到onclick点击事件触发效果,如给button按钮添加一个点击事件:
然而有时候我们希望在用户没有手动点击的情况下就触发点击事件(即想要执行点击事件的回调函数),这时只需调用一个click()方法:
这时不用等待用户真的点击就可以实现效果了,并且几乎所有浏览器都是支持的。
但是如果将上面的button标签改为div,其他的都不变,在safari浏览器中就不能自动触发点击事件了。其实只有input/button元素是在所有浏览器都具有click方法,而其他的元素就不一定了。
那要怎么在不支持的浏览器中实现这种效果呢?我们可以用dispatchEvent来实现,如下:
上面的实现方式让你能明白浏览器的差异。在实际实现这个效果时可以直接判断元素是否具有click方法即可,Safari/Chrome中非input/button元素没有click方法,返回undefined。
特性判断有更好的前瞻性,比如Safari/Chrome在后续版本中实现了非input/button元素的click方法,那么特性判断的函数仍然可以向下兼容。
<button id="btn">点我</button> <script> var btn = document.getElementById("btn"); btn.onclick = function(){ alert("终于点我了!"); } </script>
然而有时候我们希望在用户没有手动点击的情况下就触发点击事件(即想要执行点击事件的回调函数),这时只需调用一个click()方法:
btn.click();
这时不用等待用户真的点击就可以实现效果了,并且几乎所有浏览器都是支持的。
但是如果将上面的button标签改为div,其他的都不变,在safari浏览器中就不能自动触发点击事件了。其实只有input/button元素是在所有浏览器都具有click方法,而其他的元素就不一定了。
那要怎么在不支持的浏览器中实现这种效果呢?我们可以用dispatchEvent来实现,如下:
<div id="div1" onclick="alert(3)">点我点我</div> <script> function dispatch(dom, type){ try{ var evt = document.createEvent('Event'); evt.initEvent(type,true,true); dom.dispatchEvent(evt); }catch(e){alert(e)}; } var div1= document.getElementById('div1'); dispatch(div1, 'click'); </script>
上面的实现方式让你能明白浏览器的差异。在实际实现这个效果时可以直接判断元素是否具有click方法即可,Safari/Chrome中非input/button元素没有click方法,返回undefined。
<div id="div1" onclick="alert(3)">点我点我</div> <script> function dispatch(dom){ if(dom.click){ dom.click(); }else{ try{ var evt = document.createEvent('Event'); evt.initEvent("click",true,true); dom.dispatchEvent(evt); }catch(e){alert(e)}; } } var div1= document.getElementById('div1'); dispatch(div1);
特性判断有更好的前瞻性,比如Safari/Chrome在后续版本中实现了非input/button元素的click方法,那么特性判断的函数仍然可以向下兼容。
相关文章推荐
- js模拟点击事件实现代码
- Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item
- 如何使用SendMessage函数实现模拟鼠标点击按钮事件?
- android开发模拟click点击事件
- js模拟点击事件实现代码
- 2014.04.04实现 模拟a标签的点击事件
- 使用jQuery 模拟鼠标点击a标签事件 实现定位
- Android开发之PullToRefresh的Click点击事件的监听实现长按删除Item
- Android chart、图表、条形图、饼图 pie chart 等的实现及点击事件、监听器的实现 click ,achartengine
- js模拟点击事件实现代码
- js模拟点击事件实现代码
- click被阻止后如何实现点击事件
- android远程控制(三)----通过后台服务实现系统点击事件模拟
- javascript模拟点击事件--实现视频自动播放
- jQuery UI draggable(拖动)兼容移动端并且模拟click点击事件,兼容安卓
- Android系统上实现类似按键精灵的效果(模拟触屏点击事件)
- js模拟点击事件实现代码
- 【Android】代码实现模拟屏幕点击和键盘按键事件
- js模拟点击事件实现代码
- js模拟点击事件实现代码