原文: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);
}