var IframeOnClick = {
resolution: 200,
iframes: [ ],
interval:null,
Iframe:function() {
this.element = arguments[0]
this.cb = arguments[1]
this.hasTracked =false
},
track:function(element, cb) {
this.iframes.push(newthis.Iframe(element, cb))
if (!this.interval) {
var _this =this
this.interval = setInterval(function() { _this.checkClick() },this.resolution)
}
},
checkClick:function() {
if (document.activeElement) {
var activeElement = document.activeElement
for (var iinthis.iframes) {
if (activeElement ===this.iframes[i].element) {// user is in this Iframe
if (this.iframes[i].hasTracked ==false) {
this.iframes[i].cb.apply(window, [])
this.iframes[i].hasTracked =true
}
}else {
this.iframes[i].hasTracked =false
}
}
}
}
}
最后直接调用
IframeOnClick.track(document.getElementById("iFrame"),function() { alert('a click') })
内容摘抄自: https://www.cnblogs.com/limeiky/p/6632796.html需求:
如果没有iframe,则可以通过判断点击元素的类名的方式,通过排除方法来实现。
如果iframe在本地,不存在跨域问题,还可以通过在父页面绑定方法来隐藏。
如果是跨域的,获取不到iframe的document,则还可以通过document.activeElement来实现。
调用的时候:
tips:
其实这种写法是做了个类似轮循,每隔200ms,就去判断当前页面的activeElement,如果是传入的iframe,并且hasTracked是false,就执行传入的回调函数,并把hasTracked的值置为true;
如果当前的activeElement不是iframe,就把iframe的hasTracked 置为false。
方法如下:当在段落上按下鼠标按钮时执行一段 JavaScript:
<p onmousedown="mouseDown()">请点击此文本!</p>
定义和用法
onmousedown 属性在鼠标按钮在元素上按下时触发。
提示:相对于 onmousedown 事件的事件次序(限于鼠标左/中键):
onmousedown onmouseup onclick
相对于 onmousedown 事件的事件次序(限于鼠标右键):
onmousedown onmouseup oncontextmenu
注释:onmousedown 属性不适用以下元素:<base>、<bdo>、<br>、<head>、<html>、<iframe>、<meta>、<param>、<script>、<style>或 <title>。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)