继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

用document.activeElement解决iframe跨域问题

慕田峪9129951
关注TA
已关注
手记 337
粉丝 200
获赞 993

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);

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP