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,不再需要)。示例代码如下:
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(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
Google Chrome Frame 自定义渲染方式,调用ActiveX的更多相关文章
- IE内嵌google chrome frame解决浏览器兼容问题
IE内嵌google chrome frame解决浏览器兼容问题 http://www.cnblogs.com/xwdreamer/archive/2013/12/17/3477776.html 参 ...
- 【转】IE内嵌google chrome frame解决浏览器兼容问题
参考文献: http://www.pseudowired.com/2012/12/04/tomcat-http-header-manipulation/(html中自动添加使用chrome的heade ...
- IE 加速插件之 Google Chrome Frame
前言 IE 8 及以下版本的速度较慢. 特别是前端的js 和 css 内容较多时尤为突出. 就笔者的开发经验来说GWT, Ext JS, raphael , draw2d 等开发的系统在IE下使用是相 ...
- Google chrome浏览器中通过扩展调用本地应用程序以及和程序相互通讯(C++)
最近项目用到浏览插件的开发,IE用到的是BHO,chrome打算做成扩展. 但是和ie有一点不同,chrome扩展是基于html+js+css开发的,那么就会有二个问题 1. 代码和算法等容易被别人复 ...
- 使用 Google Chrome 数据抓包方式免费下载收费音乐
对于每个有音乐细胞的 boys & girls 来说,听音乐的时候是不是会经常遇到如下图的问题. 自从音乐进入正版之后,很多歌曲只有付费用户才可以下载.虽然可以在线听,可是以我的倔脾气,就是喜 ...
- 告别IE给我们的web开发带来的困扰(使用chrome frame v8引擎)
茶爸爸个人微信:benyzhous,公众号:cha-baba欢迎骚扰 由于客户所有机器必须使用IE6浏览器,导致我们在开发项目过程中遇到非常多的样式与性能问题,在偶然的一次使用360软件管家搜索chr ...
- 【转】使用Chrome Frame,彻底解决浏览器兼容问题
本文转自http://www.ryanbay.com/?p=269,感谢该作者的总结 X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的. 通过在meta中设置 ...
- Skyline TerraExplorer Pro(等ActiveX控件)在Google Chrome浏览器的运行方法
首先感谢ActiveX for Chrome 网银助手(np-activex)这个项目(https://code.google.com/p/np-activex/),解决了我们困惑很久的问题——在Ch ...
- Google Chrome 自定义协议(PROTOCOL)问题的处理
最近在使用谷歌浏览器的时候遇到了自定义协议(PROTOCOL)的问题,比较折腾,特此记录,希望我浪费生命换来的结果能够帮助读到此文的朋友少浪费一点宝贵的时间! 由于某些原因,电脑里一直没有安装阿里旺旺 ...
随机推荐
- dao层
/* * 查询 */ public List<User> selectAll(); public User findById(String id); public User findByU ...
- node.js在windows环境下的安装
node.js官网 https://nodejs.org/en/ Download
- 01、手把手Android攻城入门
1.Android开发环境搭建: Eclipse Java EE IDE + ADT-23.0.6 + android-sdk-21-with-sdk-manager-r23.0.2 (安卓5.0)+ ...
- 运用Mono.Ceci类库修改.NET程序集 走上破解软件的道路
代码注入在C++时代很流行,主要是对现有的程序做一些修改,以达到预期的目的.一部分的破解程序,注册机也是借助于此方法,让被注入的程序绕过验证,达到破解的目录.在.NET中,借助于Mono.Cecil程 ...
- Android系统分区理解及分区目录细解
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Jquery EasyUI封装简化操作
//confirm function Confirm(msg, control) { $.messager.confirm('确认', msg, function (r) { if (r) { eva ...
- LICEcap – 灵活好用,GIF 屏幕录制工具
LICEcap – 灵活好用,GIF 屏幕录制工具 http://www.appinn.com/licecap/
- latextools \cite 自动补全
最近在用latex写毕业论文,编辑环境用的是Sublime Text 2 加 latextools 插件,在使用latextools的\cite命令来引用参考文献时,我们希望输入\cite{ 后自动弹 ...
- discuz 使用阿里云OSS
discuz 使用阿里云OSS (转)http://bbs.aliyun.com/read/239257.html 说明:我绑定了二级域名,本演示采用二级域名oss来介绍,我实际使用的是二级域名pic ...
- Scala 深入浅出实战经典 第67讲:Scala并发编程匿名Actor、消息传递、偏函数解析
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...