• 获取子页面iframe的点击事件及iframe跨域的交互


    1、获取子页面iframe的点击事件

      1.1、获取iframe

        var frame = document.getElementById('addrClick2');

      1.2、获取点击事件

    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

    if (this.iframes[i].hasTracked == false) {
    this.iframes[i].cb.apply(window, []);
    this.iframes[i].hasTracked = true;
    }
    }
    else {
    this.iframes[i].hasTracked = false;
    }
    }
    }
    }
    };
    //此处写iframe点击后需要处理的事
    IframeOnClick.track(frame, function () {
    处理的事
    });

    2、iframe跨域的交互
    2.1、获取iframe
      var frame = document.getElementById('addrClick2');
    2.2向子页面传输信息
      frame.contentWindow.postMessage('setLocation,' + null + "," + null, '*');
      setLocation,可随意编写,只要和iframe里的message的方法对应上
    2.3、获取子页面传输的信息
    window.addEventListener('message', function (event) {
    //此处执行事件
    var data = event.data;
    var str = data.split(',');
    if ("setLocation" == str[0]) {
    getLocation(str[1], str[2]);
    if (str[3]) {
    getJKInfo(str[3]);
    }
    }
      })
     
     
  • 相关阅读:
    CG_Lession
    linux学习网站大全[转]
    C++ books
    Linux 建议学习路径[转]
    talking C++ STL
    Factory
    计算机图像图形学相关好书推荐
    ASP.NET控件缩写大全
    web开发面试题一
    ASP.Net面试题之二
  • 原文地址:https://www.cnblogs.com/coolSome/p/11010344.html
Copyright © 2020-2023  润新知