IE嵌Chrome渲染拆件

原文:http://wiki.bsdn.org/pages/viewpage.action?pageId=50070010

  1. 页面引用(页面A(IE)iFrame引用页面B(Chrome Frame))
function onload() { 
    if (CFInstance && CFInstance.isAvailable()) { //判断CFInstance是否可用 
        var gcf = new CFInstance({ 
            src : url, //页面B的url地址 
            className : "chrome-frame" //通过该className可以控制返回对象的css 
            }); 
        document.body.appendChild(gcf); //添加至页面指定位置 
    }else { 
        open(url, "_self"); //CFInstance不可用时执行的动作 
    } 
};

2.页面引用(页面A(IE)iFrame引用页面B(Chrome Frame), 页面B 打开url)

  • 页面A代码
function onload() { 
    if (CFInstance && CFInstance.isAvailable()) { 
        var gcf = new CFInstance({ 
            src : url, 
            className : "chrome-frame" 
        }); 
        gcf.rpc.expose("showIEDialog", showIEDialog); //注册页面A中可调用的方法 
        document.body.appendChild(gcf); 
    } else { 
        open(url, "_self"); 
    } 
}; 

function showIEDialog(url, name, options) { 
    window.open(url, name, options); 
}
  • 页面B代码(注:坑,第二个参数要加上[]          !!!!!! )
//页面B代码示例 
if (CFInstance && !dorado.Browser.msie) { //判断当前为非IE浏览器且CFInstance可用 
    if (CFInstance.rpc) { //判断当前页面是否通过new CFInstance方式打开 
        //调用框架页C中暴露的方法showIEDialog,第二个参数为传递的参数 
        CFInstance.rpc.callRemote("showIEDialog", [ url, name, options ]); 
        CFInstance.rpc.init(); 
     } else { 
            //当前页面非new CFInstance方式打开,例如直接使用Chrome浏览器打开了框架页C 
            alert("目标地址需要IE浏览器"); 
     } 
} else { //当前浏览器为IE且Chrome Frame不可用,页面A为IE渲染 
    open(url, name, options); 
}

猜你喜欢

转载自blog.csdn.net/weixin_40845192/article/details/84326951