Google Chrome Frame 自定义渲染方式,调用ActiveX
通過meta段的設置可以控制瀏覽器的渲染行為,但在一些特殊情況下,meta段的設置無效,我們需要額外的操作以達到目的。
模式1:頁面A(IE)iFrame引用頁面B(Chrome Frame)
問題描述
在IE渲染的頁面A中,使用iframe引用的頁面B即使添加了meta信息也不會使用Chrome Frame渲染。
解決方法
CFInstance.js(見文檔附件)同樣是由Google提供的開源源代碼,幫助我們更靈活的使用Chrome Frame。在頁面A中引入CFInstance.js,頁面加載完畢后調用new CFInstance()。其返回一個內部使用Chrome Frame渲染的Object對象。最后將該對象添加至A頁面目標位置(刪除原iframe,不再需要)。示例代碼如下:
?
問題描述模式2:頁面A(Chrome Frame)iFrame引用頁面B(IE)
在Chrome Frame渲染的頁面A中,使用iframe引用的頁面B(無論是否添加了meta段)也將使用Chrome Frame渲染。
解決方法
調整頁面結構,增加框架頁C(使用IE渲染)。將頁面A、B分別使用new CFInstance和iframe方式引入并布局在框架頁C中,頁面結構如下:
模式3:頁面A(Chrome Frame)Open頁面B(IE)
問題描述
在Chrome Frame渲染的頁面A中,調用window.open打開的頁面B(無論是否添加了meta段)也將使用Chrome Frame渲染。
解決方法
調整頁面結構,增加框架頁C(使用IE渲染)。通過new CFInstance方式將頁面A引入框架頁C,在頁面A中調用框架頁C的open方法打開頁面B。這時頁面B將使用IE渲染。頁面結構如下:
在頁面A中調用框架頁C的open方法時,不能簡單的通過window.parent.open方式實現,需要借助CFInstance的rpc實現跨瀏覽器通訊。示例代碼如下:
//框架頁C代碼示例 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); } //頁面A代碼示例 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); }模式4:頁面A(Chrome Frame)使用 ActiveX
問題描述
如何在Chrome Frame渲染的頁面中使用ActiveX。
解決方法
不推薦在Chrome Frame渲染的頁面中使用ActiveX,需要確保使用ActiveX控件的頁面由IE渲染。
存疑的備選解決方法
ActiveX for Chrome是一款專門為Chrome瀏覽器開發的擴展程序,其目的是為了在Chrome瀏覽器中可以直接使用ActiveX控件。但該項目已經很長一段時間沒有更新。在本次項目中,經過實際測試,其并不能很好的為所有ActiveX控件提供支持。因此,如果使用ActiveX for Chrome,一定要進行全功能覆蓋測試。
項目地址:http://code.google.com/p/np-activex/
參考資料:http://wiki.bsdn.org/pages/viewpage.action?pageId=50070010
js下載:CFInstall.js? ??CFInstance.js
轉載于:https://www.cnblogs.com/onlywujun/p/5742817.html
總結
以上是生活随笔為你收集整理的Google Chrome Frame 自定义渲染方式,调用ActiveX的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1337):mongoDB文档
- 下一篇: 计算机二级MS office 复习思维导