如果用户使用过时的浏览器,我有一个页面会提示您安装 Google Chrome Frame 。
如果用户选择安装插件,则效果很好。但是,如果他/她选择不安装它并关闭该层;使用相同的按钮再次打开图层是不可能的。 (基本上它只能工作一次。)
我是否可以在每次点击安装时强行启用Google Chrome Frame?
(我尝试过强制cookie,但似乎没有用。)
测试页here。
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script>
<![endif]-->
</head>
<body>
<a href="#" class="dngcf">Prompt</a>
<script>
$(function(){
if( $.browser.msie && $.browser.version < 9 ){
if( navigator.userAgent.indexOf('chromeframe') < 0 ){
$('.dngcf').bind('click', function(){
//document.cookie = 'disableGCFCheck=0;path=/;';
CFInstall.check({
url: 'http://www.google.com/chromeframe/eula.html?user=true',
mode: "overlay",
destination: "http://mywebsite.com"
});
});
}else{
alert('GCF is already installed');
}
}else{
alert('You need IE 6, 7 or 8 in order to see the "bug".');
}
});
</script>
</body>
</html>
这似乎是与会话相关的问题 当我重新启动浏览器时,链接再次运行一次。但是,当我只刷新页面时却不会。
此行为是设计。它允许管理员在每个页面上为check()
进行GCF,而不会每次都向用户发出提示。
接受的答案允许您规避此行为。
答案 0 :(得分:9)
你对cookie是正确的,但它在显示弹出窗口时也会设置一个私有变量,因此如果不破解cfinstall脚本,我们会考虑覆盖现有方法。
这是我能得到的最好的。有一个问题,按“取消”然后“关闭”意味着当你再次弹回它时弹出窗口仍然在第二页,但你可以从那里安装,所以我不认为这是一个大问题。 (我内心的学生不喜欢它!)
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script>
<![endif]-->
</head>
<body>
<a href="#" class="dngcf">Prompt</a>
<script>
$(function(){
if ($.browser.msie && $.browser.version < 9){
if (navigator.userAgent.indexOf("chromeframe") < 0){
$(".dngcf").on("click", function(){
if ($(".chromeFrameOverlayContent").length > 0) {
$(".chromeFrameOverlayContent, .chromeFrameOverlayUnderlay").show();
} else {
CFInstall.check({
url: "http://www.google.com/chromeframe/eula.html?user=true",
mode: "overlay",
destination: "http://mywebsite.com"
});
$("#chromeFrameCloseButton").off("click").on("click", function() {
$(".chromeFrameOverlayContent, .chromeFrameOverlayUnderlay").css({ display: "none" });
});
}
});
} else {
alert('GCF is already installed');
}
} else {
alert('You need IE 6, 7 or 8 in order to see the "bug".');
}
});
</script>
</body>
</html>