原文:http://wiki.bsdn.org/pages/viewpage.action?pageId=50070010
- 页面引用(页面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);
}