iframe里面一般都会使用别人的URL,没有很多交互,使用document.activeElement可以对iframe进行事件监听。
使用下面的类进行测试:
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(new this.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 i in this.iframes) {
if (activeElement === this.iframes[i].element) { // user is in this Iframe
this.iframes[i].cb.apply(window, []);
}
}
}
}
};
var index = layer.open({
type: 2,
content: 'http://layim.layui.com',
area: ['320px', '195px'],
maxmin: true,
success:function (layero,index) {
var iframeWin = window[layero.find('iframe')[0]['name']];
IframeOnClick.track(layero.find('iframe')[0], function() { console.log("testtttt") });
}
});
layer.full(index);