跨 iframe 传输数据

背景:项目用 easyUI 写前端,窗口使用 easyui-window 内嵌套 iframe 展示页面。遇到需要在窗口间传输数据的需求。

解决方案

获取 iframe 对象,然后通过获取的 iframe 对象操作该页面内的元素;

代码

// 示例
var iframe = GetIframe("iframe_dlgMyDialog");
var datagrigDatas = iframe.$("#dg").datagrid('getData');

// 获取iframe对象
function GetIframe(name) {
    var browserType = myBrowser();
    var iframe;
    
    // IE浏览器
    if (browserType == "IE" || browserType == "IE10+") {
        iframe = parent.window.frames[name];
    }
    else {
        iframe = parent.window.frames[name].contentWindow;
    }
    
    return iframe;
}

// 判断当前浏览类型 
function myBrowser() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 
    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器 
    var isEdge = userAgent.indexOf("Windows NT 6.1;") > -1 && userAgent.indexOf("Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器 
    var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器 
    var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器 
    var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
   
     if (isIE) {
        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
        reIE.test(userAgent);
        var fIEVersion = parseFloat(RegExp["$1"]);
        if (fIEVersion == 7) { return "IE"; }
        else if (fIEVersion == 8) { return "IE"; }
        else if (fIEVersion == 9) { return "IE"; }
        else if (fIEVersion == 10) { return "IE10+"; }
        else if (fIEVersion == 11) { return "IE10+"; }
        else { return "0" }//IE版本过低 
    }    
    if (isFF) { return "FF"; }
    if (isOpera) { return "Opera"; }    
    if (isSafari) { return "Safari"; }    
    if (isChrome) { return "Chrome"; }    
    if (isEdge) { return "IE10+"; }
}

猜你喜欢

转载自www.cnblogs.com/ysfire/p/10237543.html