欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

跨 iframe 传输数据

程序员文章站 2022-11-01 18:53:42
获取 iframe 对象,然后通过获取的 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+"; }
}