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);
来源: http://www.bubuko.com/infodetail-2697456.html